1

データベースに挿入するときにコードに問題があるというエラーが表示されますが、それを見つけることができません。エラーは、それが INSERT ステートメントの何かであることを示唆していますが、行に表示されます"cmd.ExecuteNonQuery();"。アクセスデータベースを使用しています。

エラー: INSERT INTO ステートメントの構文エラーです。

con.Open();
string mysql; 
mysql = "INSERT INTO [User](FirstName,Surname,Age,HouseNumber,PostCode,Username,Password) 
         VALUES (?,?,?,?,?,?,?)";
OleDbCommand cmd = new OleDbCommand(mysql, con);
cmd.Parameters.AddWithValue("@p1", tbFirstName.Text);
cmd.Parameters.AddWithValue("@p2", tbSurname.Text);
cmd.Parameters.AddWithValue("@p3", int.Parse(tbAge.Text));
cmd.Parameters.AddWithValue("@p4", tbAddress1.Text);
cmd.Parameters.AddWithValue("@p5", tbPostCode.Text);
cmd.Parameters.AddWithValue("@p6", tbUsername.Text);
cmd.Parameters.AddWithValue("@p7", tbPassword.Text);
cmd.ExecuteNonQuery();
con.Close();
4

2 に答える 2

5

値を持つパラメーターを追加するときは、一致する型に変換する必要があります。年齢が数値の場合

cmd.Parameters.AddWithValue("@p3", int.Parse(tbAge.Text));

また、あなたが試すことができるUserキーワードです

"INSERT INTO [User] ([FirstName], [Surname], [Age], [HouseNumber], [PostCode], [Username], [Password]) VALUES (?,?,?,?,?,?,?)";
于 2013-05-09T16:14:33.640 に答える
-1

?をパラメータに置き換えてみましたか?

訂正:次のように追加する必要があると思いますOleDBParameters

con.Open();
string mysql; 
mysql = "INSERT INTO User(FirstName,Surname,Age,HouseNumber,PostCode,Username,Password) 
     VALUES (@p1,@p2,@p3,@p4,@p5,@p6,@p7)";
OleDbCommand cmd = new OleDbCommand(mysql, con);
cmd.Parameters.AddRange(new OleDbParameter[]
{
    new OleDbParameter("@p1", tbFirstName.Text),
    new OleDbParameter("@p2", tbSurname.Text),
           ...
});
cmd.ExecuteNonQuery();
con.Close();
于 2013-05-09T16:30:29.783 に答える