2013-03-29 67 views
0

您好我基本上正在創建一個註冊頁面。我收到一條錯誤,指出「INSERT INTO語句中的語法錯誤」。有時我也會得到一個錯誤,說連接是開放的或者是其他的東西。它是在不同的表前的工作和不同領域等...代碼如下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訪問表的結構如下...

將First_Name ID Last_name Phone_No用戶名密碼電子郵件地址城市國家郵政編碼

有人可以幫我嗎? :) 謝謝:)

+1

請出示實際的錯誤消息。 – geoffspear

+0

1.連接未關閉。連接的當前狀態已打開。 – user2211486

+0

2. INSERT INTO語句中出現語法錯誤。 – user2211486

回答

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)"; 
+0

檢查是否cmd.ExecuteNonQuery()> 0,然後插入數據。 –

+0

這次的錯誤仍然是一個錯誤 - 「查詢值和目標字段的數量不一樣」。 – user2211486

+0

@ Zeeshand Anjum嗨:)我該如何檢查?你能告訴我嗎?我真的很陌生>< – user2211486

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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
+0

仍然收到相同的錯誤「INSERT INTO語句中的語法錯誤」。指向cmd.ExecuteNonQuery(); – user2211486

1

這個問題是由PASSWORD這個詞造成的。這個詞是reserved word in 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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 
+0

是的!非常感謝!順便說一句,感謝您提前幫助我提出的問題:) – user2211486

相關問題