繁体   English   中英

C#使用数据集更新访问数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM