1

insert into ステートメントで構文エラーが発生しました。Microsoft Access データベースを使用しています。コードサンプルは次のとおりです。

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("measurmentdb.mdb"));
        OleDbCommand cmd = new OleDbCommand("insert into tbl_Users(Username,Name,Surname,Password,Email,Phonenumber,CV)values(@un,@name,@sna,@pw,@em,@pn,@cv)", con);
        cmd.Parameters.AddWithValue("@un", txtusername.Text); 
        cmd.Parameters.AddWithValue("@name", txtname.Text);
        cmd.Parameters.AddWithValue("@sna", txtsurname.Text);
        cmd.Parameters.AddWithValue("@pw", txtpassword.Text);
        cmd.Parameters.AddWithValue("@em", txtemail.Text);
        cmd.Parameters.AddWithValue("@pn", txtphone.Text);
        cmd.Parameters.AddWithValue("@cv", txtcv.Text);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
    catch (Exception ex)
    {

        throw ex;
    }
}

データベース内のすべてがテキスト形式です。

tbl_Users:
Username
Name
Surname
Password
Email
Phonenumber
CV

何が悪いのかわかりませんでした。助けていただければ幸いです。

4

1 に答える 1

3

NAMEおよびMS AccessPASSWORD予約語です。

[NAME]とのような角括弧でそれらを使用します[PASSWORD]

OleDbCommand cmd = new OleDbCommand("insert into tbl_Users(Username,[Name],Surname,[Password],Email,Phonenumber,CV)values(@un,@name,@sna,@pw,@em,@pn,@cv)", con);

予約語がすでに使用されている場合は、出現する単語を角かっこ ( [ ]) で囲むことにより、エラー メッセージを回避できます。ただし、最善の解決策は、名前を予約語以外に変更することです。

于 2013-05-17T22:49:38.640 に答える