2013-03-25 4 views
-2

Я использую следующий код для вставки записи из одной базы данных в другую, но она не работает. Я пробовал запрос в MS-ACCESS 2007, и он отлично работает, но он не работает, когда вызывается программно из моего кода на C#?Вставить в базу данных доступа 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(); 

Когда я беру содержание query_insert в доступе мс, он отлично работает.

+0

Что исключением вы получаете? Имеет ли исполняющая учетная запись доступ к внешней базе данных? –

+0

Что именно не работает? Вы получаете исключение? – Tomtom

+0

** предупреждение ** ваш код уязвим для SQL-инъекций. –

ответ

3

Я думаю, вам нужно использовать

cmd_insert.executeNonQuery() 
+0

, когда я пытаюсь это получить, исключение синтаксической ошибки в INSERT INTO – user2183831

+0

Это означает, что ваш синтаксис sql неверен. В этой ситуации я поставил некоторые точки останова, чтобы определить значение query_insert и вставить его в ваш доступ к базе данных ms, чтобы узнать, работает ли он – Crowlix

+0

. Я делаю это уже и работает в ms-access – user2183831

0

dAdapter.Update(); должен сделать трюк

+0

Что вы имеете в виду? – user2183831

+0

вы создали инструкцию insert, но вы ее не выполнили. Пример можно прочитать здесь: [link] (http://stackoverflow.com/questions/5874887/using-oledbdataadapter-and-dataset-to-update-access-mdb) Вы можете оставить вне кода DataTable, если вы хотите. – wonko79

1

Удалите запятую после последнего имени поля в списке SELECT.

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

У меня все еще есть проблема – user2183831

0

Это кажется подозреваемым:

" Where Branch_ID = " + textBox1.Text ; 

textBox1 Содержит ли числовой идентификатор? Входит ли идентификатор в исходную базу данных?

Я бы 1) проверил, существует ли идентификатор и предупреждает пользователя, если он этого не делает, и 2) изменил запрос на использование параметров вместо объединения SQL.

Что произойдет, если ваша компания открыла филиал с идентификатором

"1; DROP TABLE Branches" 
+0

Я использую параметры, но все же имею ту же проблему – user2183831

Смежные вопросы