OLEDB Параметрированный запрос

public void LoadDB() { string FileName = @"c:\asdf.accdb"; string query = "SELECT ID, Field1 FROM Table1 WHERE ID=? AND Field1=?"; string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName; OleDbConnection odc = new OleDbConnection(strConn); dAdapter = new OleDbDataAdapter(); OleDbCommand cmd = new OleDbCommand(query,odc); cmd.Parameters.Add("?", OleDbType.Integer, 5).Value = 1234; cmd.Parameters.Add("?", OleDbType.BSTR, 5).Value ="asdf"; dAdapter.SelectCommand = cmd; ds = new DataSet(); dAdapter.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; } 

Я пытаюсь использовать параметризованный запрос для привязки файла доступа в datagridview. Он отлично называет имена столбцов, но содержимое пусто.

Как я могу исправить эту проблему?

В моей тестовой программе на ds.Tables [0] .Rows.Count datatable фактически была возвращена 1 строка (так как в моей тестовой базе данных была одна строка, которая соответствовала самому запросу). Если вы поместите перерыв на эту строку, вы сможете увидеть, попадают ли данные непосредственно в данные. Попробуй это:

 dataGridView1.DataSource = ds.Tables[0]; 

Как выглядит привязка к интерфейсу dataGridView1 переднего конца? Запуск запроса в Access также может пролить свет на ситуацию.

Ниже приведен пример того, как параметризованные запросы работают с CSharp, OleDB.

 try { connw.Open(); OleDbCommand command; command = new OleDbCommand( "Update Deliveries " + "SET Deliveries.EmployeeID = ?, Deliveries.FIN = ?, Deliveries.TodaysOrders = ? , connw); command.Parameters.Add(new OleDbParameter("@EMPID", Convert.ToDecimal(empsplitIt[1]))); command.Parameters.Add(new OleDbParameter("@FIN", truckSplit[1].ToString())); command.Parameters.Add(new OleDbParameter("@TodaysOrder", "R")); catchReturnedRows = command.ExecuteNonQuery();//Commit connw.Close(); } catch (OleDbException exception) { MessageBox.Show(exception.Message, "OleDb Exception"); } 

Это будет работать с любым sql-заявлением, вы должны назначить знак вопроса «?» для каждого параметра, а затем ниже вы должны создать параметры и добавить их в порядке, как вы выложили вопросительные знаки, чтобы получить правильные данные в нужное поле.

Попробуйте без указания размера столбца в параметрах:

 cmd.Parameters.Add("?", OleDbType.Integer).Value = 1234; cmd.Parameters.Add("?", OleDbType.BSTR).Value ="asdf"; 
  • передавать значение из одной формы в другую
  • Узнайте о контроле с последним фокусом
  • Преодоление ограничений на доступ к ОС в Windows Минимальный размер
  • Как изменить цвет шрифта отключенного TextBox?
  • Application.OpenForms.Count = 0 всегда
  • Включить Entity Framework 6 для MySql (C #) в WinForms Microsoft Visual Studio 2013
  • Кнопка внутри текстового windows winforms
  • Общий базовый class для WinForm UserControl
  • Как получить доступ к управлению текстовым полем Winform из другого classа?
  • Как я могу создать приложение .NET Windows Forms, которое работает только в системном трее?
  • Как заполнить пустой текстовый текст по умолчанию?
  • Interesting Posts

    Значимые миниатюры для видео с использованием FFmpeg

    Как настроить IIS для URL-адреса Переписывание приложения AngularJS в режиме HTML5?

    Как Windows 8 Runtime (приложения для WinRT / Windows Store / Windows 10 Universal App) сравниваются с Silverlight и WPF?

    Вставить и вставить MySQL

    java.lang.IllegalArgumentException: Сервлеты с именем и отображаются как URL-адрес , который не разрешен

    AngularJS – Как я могу ссылаться на имя свойства в ng-Repeat

    System.Net.Http: отсутствует в пространстве имен? (используя .net 4.5)

    Как использовать греческие символы в ggplot2?

    Как переустановить Cortana?

    Как выполнить загрузку и загрузку FTP?

    Как я могу разобрать строку JSON, которая приведет к незаконным идентификаторам C #?

    Parse цитирует строки с boost :: spirit

    OnclientClick и OnClick не работают одновременно?

    Как установить программы по умолчанию для всех пользователей на терминальном сервере Windows 2008?

    В bash, как мне избежать восклицательного знака?

    Давайте будем гением компьютера.