0

这个 SQL UPDATE 语句有什么问题?

try
{
   int ageValue = Int32.Parse(age.Text);

   string updateQuery = "Update \nMyTable \nSet \nFName = '" + fname.Text.ToString() + "',\nLName = '" + lname.Text.ToString() + "',\nAge = " + ageValue + ",\nCome = '" + from.Text.ToString() + "',\nTo = '" + to.Text.ToString() + "' Where Age=" + ageValue + ";";

   MessageBox.Show(updateQuery);

   OleDbConnection con = new OleDbConnection("provider=Microsoft.JET.OLEDB.4.0; Data Source = Database5.mdb");

   OleDbCommand com = new OleDbCommand(updateQuery, con);

   con.Open();
   com.ExecuteNonQuery();
   con.Close();
}
catch (FormatException ex)
{
    MessageBox.Show(ex.Message);
}
catch (OleDbException ex)
{
    MessageBox.Show(ex.Message);
}

我收到了那个错误

更新语句中的语法错误

该 SQL 更新有什么问题?

工具:

  • 微软访问 2003
  • 微软 Visual Studio 2010 C#

请提前帮助和感谢

4

5 回答 5

2

尝试摆脱 \n 垃圾。

string updateQuery = "Update MyTable Set FName = '" + fname.Text.ToString() + "',LName = '" + lname.Text.ToString() + "',Age = " + ageValue + ",Come = '" + from.Text.ToString() + "',To = '" + to.Text.ToString() + "' Where Age=" + ageValue;

输出连接的结果并尝试运行它。如果这不起作用,请在此处发布连接的结果,应该有人可以提供帮助。在不知道连接结果的情况下,很难知道出了什么问题。

于 2012-08-01T09:46:37.413 回答
2

尝试像这样更改查询(删除\ns 和 final ;

string updateQuery = "Update MyTable Set FName = '" + fname.Text.ToString() + 
    "', LName = '" + lname.Text.ToString() + "', Age = " + ageValue + 
    ", Come = '" + from.Text.ToString() + "', To = '" + to.Text.ToString() + 
    "' Where Age=" + ageValue;
于 2012-08-01T09:47:07.193 回答
0

这就是我用 C 语言编写内联 SQL 的方式:

string strSQL = "";
strSQL += "  Update MyTable Set  ";
strSQL += "  FName =  '" + fname.Text.ToString() + "'  ";
strSQL += "  ,LName = '" + lname.Text.ToString() + "'  ";
strSQL += "  ,Age =   '" + ageValue              + "'  ";
strSQL += "  ,Come =  '" + from.Text.ToString()  + "'  ";
strSQL += "  ,To =    '" + to.Text.ToString()    + "'  ";
strSQL += "  Where Age = '" + ageValue + "'  ";

易于阅读且工作正常。

您还可以在连接到数据库之前将其添加到查询下方:

Response.Write(strSQL);
return;

这将向您显示发布到服务器的内容,并使查找错误变得更容易。

于 2012-08-01T19:51:31.737 回答
0

您好,您可以尝试使用此代码

StringBuilder  stringBuilder = new StringBuilder() ;
stringBuilder.Append("Update MyTable Set FName = ") ;
stringBuilder.Append(fname.Text.ToString()) ;
stringBuilder.Append(",\nLName = ") ;
stringBuilder.Append(lname.Text.ToString()) ;
stringBuilder.Append(",\nAge = ") ;
stringBuilder.Append(ageValue) ;

stringBuilder.Append(",\nCome = ") ;
stringBuilder.Append(from.Text.ToString()) ;
stringBuilder.Append(",\nTo = ") ;
stringBuilder.Append(to.Text.ToString()) ;

stringBuilder.Append(" Where Age=") ;
stringBuilder.Append(ageValue) ;
stringBuilder.Append(";") ;


var result = stringBuilder.ToString();
于 2012-08-01T09:48:26.410 回答
0

我建议您打开 Sql Profiler 并跟踪您的更新查询,因为它很容易阅读连接的查询字符串

于 2012-08-01T09:46:03.043 回答