2012-05-29 175 views
1

我一直在嘗試很多不同的命令和安排。這是一個將新聯繫人輸入到數據庫的簡單程序。我的第一個數據庫東西我有簡單的文本框,只接受字母,然後只接受數字的郵政編碼。不確定爲什麼我的「executenonquery()」說「Connection屬性尚未初始化」。我錯過了什麼?連接屬性未初始化

string connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Documents and Settings\\Sales\\My Documents\\Google Drive\\Home\\Contacts\\Contacts.accdb"; 
     string command = "INSERT INTO [Contacts] (First Name, Last Name, Address, City, State/Province, ZIP/Postal Code) VALUES (@fname, @lname, @address, @city, @state, @zip)"; 
     OleDbConnection conn = new OleDbConnection(connection); 
     OleDbCommand comm = new OleDbCommand(); 
     OleDbDataAdapter da = new OleDbDataAdapter(); 
     conn.Open(); 
     comm.Parameters.AddWithValue("@First Name", fname); 
     comm.Parameters.AddWithValue("@Last Name", lname); 
     comm.Parameters.AddWithValue("@Address", address); 
     comm.Parameters.AddWithValue("@City", city); 
     comm.Parameters.AddWithValue("@State/Province", state); 
     comm.Parameters.AddWithValue("@ZIP/Postal Code", zip); 
     comm.ExecuteNonQuery(); 
     conn.Close(); 
+1

您是否嘗試從連接字符串中刪除雙斜線? 此外,您可能會在SQL語句中遇到錯誤,因爲我不認爲「州/省」或「郵編」是有效的列名稱。嘗試用方括號'[]' – jaressloo

+0

圍繞它們給出「未知的轉義序列」。 – marcmiller2007

回答

3

改變這一行:

OleDbCommand comm = new OleDbCommand(); 

...這兩行:

OleDbCommand comm = new OleDbCommand(conn); 
comm.commandText = command; 

你的命令對象需要有一個開放的連接的引用(我們通過得到使用帶連接對象的構造函數),並且你的命令對象也需要設置其命令文本屬性(否則系統不知道你試圖運行什麼查詢)。

編輯:哎呀,一段時間沒有用過這些傢伙。所有你真正需要的是這一行:

OleDbCommand comm = new OleDbCommand(command, conn); 
+0

現在它說OleDbCommand comm = new OleDbCommand(conn);有一些無效的論點。 – marcmiller2007

+1

並刪除OleDbDataAdapter不需要和不使用 – Steve

+0

@ marcmiller2007:我更新了我的答案。 – MusiGenesis

相關問題