Я пишу, потому что у меня проблема с обновлением записей в моей базе данных доступа. Я ищу запись, используя select (по id), и я показываю ее в datagridview. Затем я хочу изменить его. В представлении datagrid и обновлении изменились записи с использованием измененного набора данных. Когда им пытаются сделать это у меня есть исключение: «Метод OledbCommand.Prepare требует, чтобы все переменные параметры длины, чтобы иметь явно установить ненулевую размер»C# Обновление базы данных доступа с использованием набора данных
Это мой код:
private void button2_Click(object sender, EventArgs e)
{
connection = new OleDbConnection(connetionString);
connection.Open();
string sel = "SELECT * from Table where [email protected]";
oledbAdapter = new OleDbDataAdapter();
OleDbCommand cmd = new OleDbCommand(sel, connection);
cmd.Parameters.Add("@Id", OleDbType.Char).Value = textBox1.Text;
oledbAdapter.SelectCommand = cmd;
oledbAdapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
connection.Close();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
DataTable ndt = new DataTable();
OleDbCommandBuilder scb;
private void button1_Click(object sender, EventArgs e)
{
connection = new OleDbConnection(connetionString);
connection.Open();
DataSet changes;
changes = ds.GetChanges();
ds.AcceptChanges();
if (changes != null)
{
OleDbCommandBuilder builder = new OleDbCommandBuilder(oledbAdapter);
oledbAdapter.UpdateCommand = builder.GetUpdateCommand();
oledbAdapter.Update(changes);
ds.AcceptChanges();
}
ds.AcceptChanges();
MessageBox.Show("Saved");
Edit: Спасибо, вы очень помогли мне, но у меня есть другое исключение теперь: D
Ошибка синтаксиса (отсутствующий оператор) в выражении запроса '((ID =?) AND ((? = 1 И Идентификатор платежа ИМЕЕТ NULL) ИЛИ (Идентификатор платежа =?)) И ((? = 1 И НЕ ИМЕЕТ NULL) ИЛИ (CharNo =?)) И ((? = 1 И charName IS NULL) ИЛИ (CharName =?)) и ((? = 1 и МС IS NULL) ИЛИ (MC =?)) и ((? = 1 и зовут НУ».
и при добавлении им
builder.QuotePrefix = "[";
builder.QuoteSuffix = "]";
я есть несоответствие типов
данных в выражении критериев.
когда им пытаются обновить ..
Это помогло, но у меня есть несоответствие типов данных теперь, когда им пытаются обновить – Milan90
Не могли бы вы скопировать трассировки стека -> сообщение об ошибке –
Исключение System.Data.OleDb.OleDbException не было обработано ErrorCode = -2147217913 HResult = -2147217913 Сообщение = несоответствие типа данных в выражении критериев. Источник = Microsoft Access Database Engine – Milan90