[英]c# Updating access database using dataset
我写这篇文章是因为我在更新访问数据库中的记录时遇到问题。 我使用select(by id)搜索记录,并将其显示在datagridview中。 接下来,我想在datagrid视图中进行更改,并使用更改后的数据集更新更改后的记录。 当我试图做到这一点时,我有异常:
“ OledbCommand.Prepare方法要求所有可变长度参数具有显式设置的非零大小。”
这是我的代码:
private void button2_Click(object sender, EventArgs e)
{
connection = new OleDbConnection(connetionString);
connection.Open();
string sel = "SELECT * from Table where Id=@Id";
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");
编辑:谢谢,您真的帮助过我,但是我现在有不同的例外:D
查询表达式'(((ID =?)AND((?= 1 AND Payment ID IS NULL)OR(Payment ID =?))AND((?? 1 AND CharNo IS NULL)OR(CharNo =?))AND((?= 1 AND CharName为NULL)OR(CharName =?))AND((?= 1 AND MC为NULL)OR(MC =?))AND((?? 1 AND Name为NU '。
当我添加
builder.QuotePrefix = "[";
builder.QuoteSuffix = "]";
我有
条件表达式中的数据类型不匹配。
当我试图更新时..
尝试更改ID字段的数据类型,并为其分配长度。
cmd.Parameters.Add("@Id", OleDbType.VarChar, 25).Value = textBox1.Text;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.