当前位置: 首页 > 知识库问答 >
问题:

在c#表单应用程序“更新语句中的语法错误”中更新访问mdb数据库中的数据

斜宁
2023-03-14

我在使用MS-Accessmdb数据库的C#表单应用程序中工作。我有一个数据库,其中有一个表客户,其中包含两列CustomerIdBalance。两列都是整数数据类型。

我得到的错误是

系统数据OleDb。OLEDBEException:UPDATE语句中的语法错误。

在系统。数据。OleDb。OleDbCommand。系统中的执行命令文本错误处理(OleDbHResult hr)
。数据。OleDb。OleDbCommand。执行命令文本ForSingleResult(标记DBPARAMS dbParams,对象

到目前为止我一直在尝试的代码是

try
{
   OleDbConnection con = new 
   OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\database_for_kissan_Pashu_AhaR_Bills.mdb");

   int balance = Convert.ToInt32(textBox2.Text);
   int id = Convert.ToInt32(textBox1.Text);

   // int recordnumb = int.Parse(recordTextBox.Text);

   //  OleDbConnection oleDbConnection = new            OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\Checkout-1\\Documents\\contact.accdb");    
   OleDbCommand update = new OleDbCommand("UPDATE Customers  SET Balance = '" + balance + "',  WHERE id = " + id + " ", con);

   con.Open();
   update.ExecuteNonQuery();
   con.Close();

   // string queryText = "UPDATE Customers SET Balance = ?, where CustomerId = ?;";
   //string queryText = " 'UPDATE Customers SET Balance =' " + balance+ " ' WHERE CustomerId=  ' " +  id +  " ' " ;

   //OleDbCommand cmd = new OleDbCommand(queryText, con);
   //cmd.CommandType = CommandType.Text;
   //cmd.Parameters.AddWithValue("@balance", Convert.ToInt32(textBox2.Text));
   //cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(textBox1.Text));
   //cmd.Parameters.Add("Balance", OleDbType.Integer).Value = Convert.ToInt32(textBox2.Text);
   //cmd.Parameters.Add("CustomerId", OleDbType.Integer).Value = Convert.ToInt32(textBox1.Text);

   //con.Open(); // open the connection
   ////OleDbDataReader dr = cmd.ExecuteNonQuery();

   //int yy = cmd.ExecuteNonQuery();
   //con.Close();
}
catch (Exception ex)
{
    string c = ex.ToString();
    MessageBox.Show(c);
}

//try
//{
//    OleDbConnection con = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = G:\\my Documents\\Visual Studio 2008\\Projects\\xml_and_db_test\\xml_and_db_test\\bin\\Debug\\database_for_kissan_Pashu_AhaR_Bills.mdb");
//    string queryText = "UPDATE Customers SET Balance = ?, where CustomerId = ?;";

//    OleDbCommand cmd = new OleDbCommand(queryText, con);
//    cmd.CommandType = CommandType.Text;
//    //cmd.Parameters.AddWithValue("@balance", Convert.ToInt32(textBox2.Text));
//    //cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(textBox1.Text));

//    cmd.Parameters.Add("Balance", OleDbType.Integer).Value = Convert.ToInt32(textBox2.Text);

//    cmd.Parameters.Add("CustomerId", OleDbType.Integer).Value = Convert.ToInt32(textBox1.Text);
//    con.Open(); // open the connection
//    //OleDbDataReader dr = cmd.ExecuteNonQuery();

//    int yy = cmd.ExecuteNonQuery();
//    con.Close();

//}
//catch (Exception ex)
//{
//    string c = ex.ToString();
//    MessageBox.Show(c);

//}
//string connetionString = null;
//OleDbConnection connection;
//OleDbDataAdapter oledbAdapter = new OleDbDataAdapter();
//string sql = null;
//connetionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = G:\\my Documents\\Visual Studio 2008\\Projects\\xml_and_db_test\\xml_and_db_test\\bin\\Debug\\database_for_kissan_Pashu_AhaR_Bills.mdb;";
//connection = new OleDbConnection(connetionString);
//sql = "update Customers set Balance = '1807' where CustomerId = '1'";
//try
//{
//    connection.Open();
//    oledbAdapter.UpdateCommand = connection.CreateCommand();
//    oledbAdapter.UpdateCommand.CommandText = sql;
//    oledbAdapter.UpdateCommand.ExecuteNonQuery();
//    MessageBox.Show("Row(s) Updated !! ");
//    connection.Close();
//}
//catch (Exception ex)
//{
//    MessageBox.Show(ex.ToString());
//}

有些代码在注释中,有些代码在每个方法中都会出现相同的错误。

共有3个答案

窦弘义
2023-03-14

去掉set子句后面的逗号-您只有一个变量正在更新。设置xxx=xxx,其中应设置xxx=xxx,其中。

OleDbCommand update = new OleDbCommand("UPDATE Customers  SET Balance = '" + balance + "'  WHERE id = " + id + " ", con);
曹茂材
2023-03-14

查询中余额后有一个逗号。此外,您正在将余额转换为int 32,但由于它之间只有一个引号,因此您将其作为字符串插入。

"UPDATE Customers  SET Balance = " + balance + "  WHERE id = " + id

此查询应该有效。

上官树
2023-03-14

正如gzaxx所说。。尝试更改此

string queryText = "UPDATE Customers SET Balance = ?, where CustomerId = ?;";

具有

string queryText = "UPDATE Customers SET Balance = ? where CustomerId = ?;";
 类似资料:
  • 问题内容: 我正在使用.NET Web窗体和数据库作为数据源来构建一个简单的站点。 问题是:我有一个正常工作的后台槽,可以创建,修改和删除新页面。 虽然我可以创建和删除,但是编辑功能不起作用。 我意识到问题可能出在查询中,因为代码对于其他功能运行正常。 这是查询: 我不太喜欢SQL,我做错什么了吗? 先感谢您 编辑N掳2。目前,该查询无法正常工作,基本上,某些内容和标题中带有撇号,并且当我更新该特

  • 问题内容: Hibernate会生成包含所有列的语句,无论我是否更改了这些列中的值,例如: 发表以下声明: 因此B,C,D列已更新,而我没有更改它们。 说,项目会经常更新,并且所有列都已建立索引。 问题是:将Hibernate部分优化为如下所示是否有意义: 最让我困惑的是,“未优化”和“优化”查询版本的计划是相同的! 问题答案: 由于PostgreSQL MVCC,an 实际上更像是plus 。除

  • 问题内容: 抱歉,标题不清楚。基本上,我试图从多个表中选择某些记录,然后为返回的记录更新某个列值。 T-SQL实施 甲骨文 我尝试在Teradata中执行与在Oracle中相同的操作,但是出现以下错误: 我在网上寻找解决方案,但没有运气。 问题答案: 您是否使用Teradata尝试了以下语法:

  • 问题内容: 我有一个需要更改的地方(添加2列),然后更新同一张表。 这是我尝试过的查询: 我需要一次运行上述两个查询。 我正在使用Talend ETL工具,在这里我们有一个组件tMssqlrow,它允许我们运行多个查询(我在单个组件中使用10到15个更新查询)。 但是上面的查询不起作用。 我在数据库Microsoft SQL中进行了测试。我收到以下错误: 消息207,第16级,州1,第5行 无效的

  • 问题内容: 我有一个很大的PostgreSQL表,可以通过Django访问。因为Django的ORM不支持窗口函数,所以我需要将窗口函数的结果作为常规列烘烤到表中。我想做这样的事情: 但是我明白了 有人可以建议替代方法吗?通过Django的.raw()方法传递窗口函数语法是不合适的,因为它返回RawQuerySet,它不支持其他ORM功能,例如我需要的.filter()。 谢谢。 问题答案: 错误

  • 本文向大家介绍JDBC程序更新数据库中记录的方法,包括了JDBC程序更新数据库中记录的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JDBC程序更新数据库中记录的方法。分享给大家供大家参考,具体如下: 使用JDBC程序(Eclipse、MyEclipse)更新数据库(MySql)中的记录时可以只修改记录的一个字段或几个字段,具体方法为可以加入如下被注释代码(前提是修改之前可以从数据库