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

そのエラーを受け取りました

Update ステートメントの構文エラー

その SQL Update の何が問題なのですか?

ツール:

  • マイクロソフト アクセス 2003
  • Microsoft 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

連結されたクエリ文字列を読みやすいため、Sql Profiler を使用して更新クエリをトレースすることをお勧めします。

于 2012-08-01T09:46:03.043 に答える
0

これは、インライン SQL を C シャープで書く方法です。

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 に答える