2012-11-05 47 views
1

我在使用OLEDB Connection嘗試從C#表單插入值時收到錯誤。使用OLEDB從文本框插入

strSQL = "INSERT INTO test_table (username,password) " + 
"VALUES (@user,@pass)"; 

objCmd = new OleDbCommand(strSQL, objConnection); 
objCmd.Parameters.Add("@user", OleDbType.VarChar, 255).Value =TextBox1.Text.Trim(); 

objCmd.Parameters.Add("@pass", OleDbType.VarChar, 255).Value= TextBox2.Text.Trim(); 

// execute the command 
objCmd.ExecuteNonQuery(); 

objConnection.Close(); 
Label1.Text = "Command run";  

錯誤是

異常詳細信息:System.Data.OleDb.OleDbException:命令的處理過程中發生一個或多個 錯誤。 ORA-00936:失蹤 表達

+0

任何人都可以幫我解決這個問題嗎? –

回答

2

我相信你錯過了VALUES朋友之間的空間。在下面的例子中,我在字段列表中爲)添加了一個。

strSQL = "INSERT INTO test_table (username,password) " + 
"VALUES (@user,@pass)"; 
+0

讓我先檢查一下,謝謝:) –

+0

不行,不給結果! –

+0

@JojoGeorge,它沒有給出錯誤?那是你在說什麼? –

1

嘗試設置參數如下: -

objConnection = new OleDbConnection(strConnection); 
objConnection.ConnectionString = strConnection; 

objConnection.Open(); 



// set the SQL string 
strSQL = "INSERT INTO test_table (username,password) " + 
"VALUES (@user,@pass)"; 
// Create the Command and set its properties 
objCmd = new OleDbCommand(strSQL, objConnection); 

objCmd.Parameters.AddWithValue("@user", TextBox1.Text); 

objCmd.Parameters.AddWithValue("@pass", TextBox2.Text); 

// execute the command 
objCmd.ExecuteNonQuery(); 

objConnection.Close(); 
+0

我通常使用的是unicode類型的nvarchar。 VarChar依賴於使用的窗口代碼頁。 – mortb

+0

是的,我也試過。但錯誤依然存在。 –

+0

請參閱我的編輯 – Derek

0

試試這個:

STRSQL = 「INSERT INTO TEST_TABLE(用戶名,密碼)」 + 「VALUES(?,?) 「;

使用OleDb你需要把「?」而不是@參數