0

ユーザー情報を保存するアプリケーションを作成しています。現在、ユーザーは名前、身長、体重、誕生日を更新することになっています。

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 ステートメントの構文エラー。

構文が間違っている場所を教えてもらえますか? ありがとうございました!

4

1 に答える 1