ユーザー情報を保存するアプリケーションを作成しています。現在、ユーザーは名前、身長、体重、誕生日を更新することになっています。
string height = TB_ClientHeight.Text;
string weight = TB_ClientWeight.Text;
string name = TB_ClientName.Text;
string bday = dateTimePicker1.Value.ToString("dd-MM-yyyy");
int heightint = Convert.ToInt32(height);
int weightint = Convert.ToInt32(weight);
public static string
ユーザー名変数を別のフォームから呼び出し、それを として使用することで更新されますWHERE UserName = @username
。
usernamestringo = Login.usernameFromLogin;
このコンテキストで他のSOの回答に従い、いくつかの問題を修正しました(SQLインジェクションの防止など)。ただし、これらのフィールドを更新しているときに、まだ構文エラーが発生しますOleDbException
。
using (OleDbConnection myCon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=O:\Repos\Database\Database.accdb;Persist Security Info=False"))
using (OleDbCommand cmd = new OleDbCommand())
{
cmd.CommandType = CommandType.Text;
string query = "UPDATE TPersons SET Name=@Name, SET Height=@Height, SET Weight=@Weight, SET Bday=@Bday " + " WHERE FirstName= @username";
cmd.CommandText = query;
cmd.Parameters.AddWithValue("@Name", name.ToString());
cmd.Parameters.AddWithValue("@Height", heightint.ToString());
cmd.Parameters.AddWithValue("@Weight", weightint.ToString());
cmd.Parameters.AddWithValue("@Bday", bday.ToString());
cmd.Parameters.AddWithValue("@username", usernamestringo);
cmd.Connection = myCon;
myCon.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Updated!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
cmd.Parameters.Clear();
}
はOleDbException
:
インデックス #0 NativeError: -526847407 ソース: Microsoft Access データベース エンジン SQLState: 3000 説明 (メッセージ): UPDATE ステートメントの構文エラー。
構文が間違っている場所を教えてもらえますか? ありがとうございました!