2013-03-25 110 views
-2

我使用下面的代碼從一個數據庫插入記錄到另一個數據庫,但它不起作用。我在MS-ACCESS 2007中試過了這個查詢,它工作正常,但是它在我的C#代碼中以編程方式調用時無法工作?insert into ms訪問數據庫

string query_insert = "INSERT INTO Questionnaires_Table(BranchName,Factor,Region,Branch_ID,Current_Date,No_Employees) " 
+ "SELECT BranchName,Factor,Region,Branch_ID,Current_Date,No_Employees " 
+ "FROM Questionnaires_Table IN '" + dialog.FileName + "' Where Branch_ID = " + textBox1.Text ; 

dbConnDest.Open(); 

OleDbDataAdapter dAdapter = new OleDbDataAdapter(); 
OleDbCommand cmd_insert = new OleDbCommand(query_insert, dbConnDest); 

dAdapter.InsertCommand = cmd_insert; 

textBox2.Text = query_insert.ToString(); 

dbConnDest.Close(); 

當我在ms訪問中採取​​的內容時,它工作正常。

+0

ID的分支你什麼異常

會發生什麼?執行帳戶是否有權訪問外部數據庫? – 2013-03-25 15:06:06

+0

究竟是行不通的?你有例外嗎? – Tomtom 2013-03-25 15:06:22

+0

**警告**您的代碼易受sql注入攻擊。 – 2013-03-25 15:07:18

回答

3

我認爲你需要使用

cmd_insert.executeNonQuery() 
+0

當我嘗試這有一個INSERT INTO語法錯誤的異常 – user2183831 2013-03-25 15:12:42

+0

這意味着你的sql語法是錯誤的。在這種情況下,我提出了一些斷點,以確定query_insert的值,並將其粘貼到您的ms access db中,以查看它是否有效。 – Crowlix 2013-03-25 15:14:33

+0

我已經這樣做了,並且在ms-access – user2183831 2013-03-25 15:15:17

0

dAdapter.Update(); 應該訣竅

+0

你是什麼意思? – user2183831 2013-03-25 15:20:28

+0

你創建了一個insert語句,但是你沒有執行它。 一個例子可以在這裏閱讀:[鏈接](http://stackoverflow.com/questions/5874887/using-oledbdataadapter-and-dataset-to-update-access-mdb) 你可以省略DataTable相關的代碼if你要。 – wonko79 2013-03-25 15:27:10

1

刪除SELECT列表中最後一個字段名稱後面的逗號。

"SELECT BranchName,Factor,Region,Branch_ID,Current_Date,No_Employees" 
+0

我仍然有問題 – user2183831 2013-03-25 15:21:57

0

這似乎是犯罪嫌疑人:

" Where Branch_ID = " + textBox1.Text ; 

是否textBox1包含一個數字ID?輸入的ID是否存在於源數據庫中?

我會1)檢查ID是否存在,如果不存在,則警告用戶; 2)更改查詢以使用參數而不是串聯SQL。如果你的公司開與

"1; DROP TABLE Branches" 
+0

我使用參數,但仍然有同樣的問題 – user2183831 2013-03-25 18:40:03