2011-05-17 59 views
0

我正在與C#一起工作。以c#形式插入記錄

我想在表格中插入記錄。我正在使用MS Access數據庫。我有以下代碼:

private void button1_Click(object sender, EventArgs e) 
{ 
    con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0; 
     Data Source=C:\\Documents and Settings\\mayur patil\\ 
         My Documents\\Dairy_db\\tblCompany.mdb"; 
    con.Open(); 
    OleDbCommand cmd = new OleDbCommand(
     "INSERT INTO tblCompany (CoCode,CoName_mar) 
     VALUES("+textBox1.Text+","+textBox4.Text+")", con); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 

    this.Hide(); 
    Form1 f = new Form1(); 
    f.ShowDialog(); 
} 

我沒有得到答案..

+0

你有什麼異常? CoCode,CoName_mar的數據類型是什麼? – 2011-05-17 07:00:16

+0

yuup ...它在「INSERT INTO」命令中給出錯誤... – Rockstar 2011-05-17 07:01:12

+0

您能否把整個異常消息? – 2011-05-17 07:02:12

回答

0

一個更好的方式來創建你的命令是添加參數到它。

這使您完全擺脫思考引號的必要性,作爲一種重要的「副作用」,您可以消除SQL注入攻擊的風險。 :-)

例如,您可以在MSDN here上找到更完整的說明。然後

您的命令可能是這樣的:

OleDbCommand cmd = new OleDbCommand(
    "INSERT INTO tblCompany (CoCode,CoName_mar) 
    VALUES(@ParamCoCode, @ParamCoName_mar)", con); 

OleDbParameter paramCoCode = new OleDbParameter(); 
paramCoCode.ParameterName = "@ParamCoCode"; 
paramCoCode.SqlDbType = SqlDbType.NVarChar; 
paramCoCode.Value = categoryName; 

OleDbParameter paramCoName_mar = new OleDbParameter(); 
paramCoName_mar.ParameterName = "@ParamCoCode"; 
paramCoName_mar.SqlDbType = SqlDbType.NVarChar; 
paramCoName_mar.Value = categoryName; 

// Add the parameters to the Parameters collection. 
cmdParameters.Add(paramCoCode); 
cmdParameters.Add(paramCoName_mar); 

cmd.ExecuteNonQuery(); 
con.Close(); 

請記住,需要的參數爲大公發生在SQL語句要以相同的順序添加。

4

你需要圍繞在單引號中的值:

OleDbCommand cmd = new OleDbCommand(
     "INSERT INTO tblCompany (CoCode,CoName_mar) 
     VALUES ('" + textBox1.Text + "', '" + textBox4.Text + "')", con); 
+0

好的我會試試 – Rockstar 2011-05-17 07:09:47

0

如果列CoName_mar是字符串類型您需要更改INSERT語句,如下所示:

INSERT INTO tblCompany (CoCode,CoName_mar) 
     VALUES(" + textBox1.Text + ", '" + textBox4.Text + "')" 

只需注意單色報價textBox4值之前和之後的字符。

我假設CoCode是數值型的。

希望有所幫助。

+0

很好,謝謝。 – Rockstar 2011-05-17 07:12:47

0

可以請您給的providerName =「System.Data.OleDb」在連接字符串中並檢查您是否可以與連接字符串訪問數據庫

+0

好吧..我也會嘗試 – Rockstar 2011-05-17 07:12:13