0

こんにちは、基本的に登録ページを作成しています。「INSERT INTO ステートメントの構文エラー」というエラーが表示されます。また、接続が開いているなどのエラーが表示されることもあります。以前は別のテーブルや別のフィールドなどで機能していました...コードは次のとおりです

public partial class Registration : System.Web.UI.Page
{
    static OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\New folder\Project 1.0\WebSite1\New Microsoft Office Access 2007 Database.accdb");
    OleDbDataAdapter ada = new OleDbDataAdapter();
    OleDbCommand cmd = new OleDbCommand();
    OleDbDataReader dr;
protected void Page_Load(object sender, EventArgs e)
{

}

protected void Button1_Click(object sender, EventArgs e)
{
    string str = "insert into User_Registeration (First_Name, Last_name, Phone_No, Username, Password, Email, Address, City, Country, Zipcode)" +
         "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
    con.Open();
    cmd = new OleDbCommand(str, con);
    cmd.Parameters.AddWithValue("@p1", TextBox1.Text);
    cmd.Parameters.AddWithValue("@p2", TextBox2.Text);
    cmd.Parameters.AddWithValue("@p3", TextBox3.Text);
    cmd.Parameters.AddWithValue("@p4", TextBox4.Text);
    cmd.Parameters.AddWithValue("@p5", TextBox5.Text);
    cmd.Parameters.AddWithValue("@p6", TextBox6.Text);
    cmd.Parameters.AddWithValue("@p7", TextBox8.Text);
    cmd.Parameters.AddWithValue("@p8", TextBox12.Text);
    cmd.Parameters.AddWithValue("@p9", TextBox9.Text);
    cmd.Parameters.AddWithValue("@p10", TextBox11.Text);
    cmd.ExecuteNonQuery();
    con.Close();
}

}

そして、私の mc アクセステーブルは次の構造を持っています...

ID First_Name Last_name Phone_No ユーザー名 パスワード メールアドレス 都市 国 郵便番号

誰か助けてくれませんか?:) ありがとうございました :)

4

3 に答える 3

2

次のクエリを使用する必要があります。

  string str = "insert into User_Registeration (First_Name, Last_name, Phone_No, [Username], [Password], [Email], [Address], City, Country, Zipcode)" +
     " values (@p1, @p2, @p3,@p4, @p5,@p6, @p7,@p8,@p9,@p10)";
于 2013-03-29T13:56:35.533 に答える
1

この問題は、PASSWORD という単語が原因で発生します。この単語はJET (MS-Access)の予約語
です。SQL コマンドでその単語を使用するには、角かっこでカプセル化する必要があります。

もちろん、クエリにパラメーターを追加するときは、クエリのプレースホルダーが期待する正確な数のパラメーターを追加する必要があります。
10 個のプレースホルダー (?) があるため、10 個のパラメーターが必要であり、それぞれのフィールドで期待される正確な順序で

ということで、まとめると

string str = "insert into User_Registeration (First_Name, Last_name, Phone_No, " + 
             "Username, [Password], Email, Address, City, Country, Zipcode)" +
             "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
于 2013-03-29T14:08:50.640 に答える
0

この行にスペースがありません:

string str = "insert into User_Registeration (First_Name, Last_name, Phone_No, Username, Password, Email, Address, City, Country, Zipcode)" +
     "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

する必要があります:

string str = "insert into User_Registeration (First_Name, Last_name, Phone_No, Username, Password, Email, Address, City, Country, Zipcode)" +
     " values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
于 2013-03-29T13:52:36.743 に答える