【问题标题】:Database update error No Value given for one or more required parameters数据库更新错误 没有为一个或多个必需参数提供值
【发布时间】:2013-11-04 00:37:30
【问题描述】:

我试图在 ms 访问时使用 update 命令更新我的数据库 每当我尝试执行它时,都会为一个或多个必需参数提供无值错误。

这是我的代码

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);
        }
    }

【问题讨论】:

  • 如果 tbproductdescriptbupdate 是用户输入字段,则应注意 SQL 注入。
  • tbproductdescrip.Texttbupdate.Text的值是多少?
  • 它是一个供用户输入和更新的文本框

标签: c# ms-access


【解决方案1】:

尝试遵循下一个结构:

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);
    }

还有一个很好的例子:http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbtransaction.commit%28v=vs.110%29.aspx

【讨论】:

  • erm new OleDbConnection(cs)) 中的 cs 是什么?
  • 连接字符串。在您的情况下,“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ShopRecords.accdb”
  • datagridview 和 ms acess 数据库都没有更新
  • 确保 tbproductdescrip.Text 和 tbupdate.Text 都不为 NULL
  • 我尝试在两个文本框中输入值,但仍然无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多