2011-06-27 37 views
0

我有一個數據庫中有一堆東西,現在我正在讀數據,對它進行一些處理,然後將它粘貼到一個新的數據庫中。我的代碼生成字符串:VB.NET - 我的SQLinsert有什麼問題?訪問數據庫

query_string = "INSERT INTO OrgPhrase (EXACT_PHRASE,Org_ID) VALUES (HELLO,123)" 

那麼它這樣使用:

Dim InsertCmd = New System.Data.OleDb.OleDbCommand(query_string, connection) 
InsertCmd.ExecuteNonQuery() 

相關的數據庫(OLEDB連接)存在並打開細末,用所有的表和字段它試圖與已經工作現有。我得到的錯誤信息是「沒有給出一個或多個所需參數的值」

我錯過了什麼嗎?我拼寫錯了嗎?我沒有很多數據庫工作的經驗,但我從來沒有遇到過這種麻煩。

回答

3

我相信查詢應該是

query_string = "INSERT INTO OrgPhrase (EXACT_PHRASE,Org_ID) VALUES ('HELLO',123)" 

而且,可能發生的表中有超過2列是NOT NULL,並且需要他們的價值觀。

+0

根據Org_Id是否是字符串,也可能是query_string =「INSERT INTO OrgPhrase(EXACT_PHRASE,Org_ID)VALUES('HELLO','123')」。 –

+0

@ Gregory..Thats correct too!! Thx指出它 – Nitesh

+0

並修復它(現在有一些新問題讓我擔心)。爲了記錄,他們都是字符串。 – cost

2

考慮參數化查詢字符串。這有幾個原因。首先,您可以傳遞值而不必擔心是否需要單引號。其次,你防止SQL注入。

query_string = "INSERT INTO OrgPhrase (EXACT_PHRASE,Org_ID) VALUES (@ExactPhrase,@OrgId)" 

然後根據字符串中的參數名稱創建參數。當然,除非你的查詢字符串總是相同的值,但是這聽起來有點太硬編碼以至於不好。

+0

它不適用於任何可能對注射開放的東西。我從舊值建立一個數據庫來做一些新的數字處理。 – cost