C# 数据库更新错误没有为一个或多个必需参数提供值

C# 数据库更新错误没有为一个或多个必需参数提供值,c#,ms-access,C#,Ms Access,我试图使用update命令在ms access上更新我的数据库 是一个错误,每当我尝试执行它时,一个或多个必需参数都没有给出值 这是我的密码 private void btnupdate_Click_1(object sender, EventArgs e) { OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ShopRecords.accdb

我试图使用update命令在ms access上更新我的数据库 是一个错误,每当我尝试执行它时,一个或多个必需参数都没有给出值

这是我的密码

private void btnupdate_Click_1(object sender, EventArgs e)
    {
        OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ShopRecords.accdb");
        OleDbDataAdapter ad = new OleDbDataAdapter();
        try
        {
            ad.UpdateCommand = new OleDbCommand("UPDATE ShopRecords SET ProductDescription = '" +tbproductdescrip.Text + "' WHERE (ID= " + tbupdate.Text + ")", con);

            con.Open();
            ad.UpdateCommand.ExecuteNonQuery();
            con.Close();
        }
         catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

尝试以下下一个结构:

try
    {
        using (OleDbConnection con = new OleDbConnection(cs))
        {
            con.Open();
            OleDbTransaction tran = con.BeginTransaction();
            OleDbCommand cmd = new OleDbCommand("UPDATE ... SET ... WHERE ...", con);
            cmd.Transaction = tran;
            cmd.ExecuteNonQuery();
            tran.Commit();
            con.Close();
        }
    }
    catch (OleDbException ex)
    {
        Console.WriteLine(ex);
    }

另外,还有一个很好的示例:

尝试以下结构:

try
    {
        using (OleDbConnection con = new OleDbConnection(cs))
        {
            con.Open();
            OleDbTransaction tran = con.BeginTransaction();
            OleDbCommand cmd = new OleDbCommand("UPDATE ... SET ... WHERE ...", con);
            cmd.Transaction = tran;
            cmd.ExecuteNonQuery();
            tran.Commit();
            con.Close();
        }
    }
    catch (OleDbException ex)
    {
        Console.WriteLine(ex);
    }

还有一个很好的例子:

如果
tbproductdescripp
tbupdate
是用户输入字段,您应该注意SQL注入。
TBProductDescriptp.Text
tbupdate.Text
的值是什么?它是一个供用户输入和更新的文本框如果
TBProductDescriptp
tbupdate
是用户输入字段,您应该注意SQL注入。
tbproductDescriptp.Text
tbupdate.Text
的值是什么?它是一个文本框,用户可以输入并更新em新OleDbConnection(cs)中的cs是什么?connectionString。在您的案例中,“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ShopRecords.accdb”datagridview和ms acess数据库均未更新请确保TBProductDescriptp.Text和tbupdate.Text均未为空。我尝试在两个文本框中输入值,但仍不起作用。erm新OleDbConnection(cs)中的cs是什么?connectionString。在“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ShopRecords.accdb”的情况下,datagridview和ms acess数据库均未更新请确保TbProductDescriptp.Text和tbupdate.Text均不为空。我已尝试在这两个文本框中输入值,但仍然无效。