2014-09-22 2 views
1

Переписывание устаревшей системы в VB 2013 Express, которая подключается к базе данных доступа. Я установил соединение данных и имею DataSet со всеми таблицами. Код должен сделать следующее:VB 2013 Access DB Dataset

Удалить все строки в таблице «extract»; Прочитайте и проанализируйте новые данные; Напишите новые данные в таблицу «extract».

У меня есть часть для чтения и разбора, но мне нужна помощь в удалении и записи. Я ничего не пытаюсь работать.

Это то, что я пробовал:

Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\CLI_CRVM.accdb") 
Dim cmd As New System.Data.SqlClient.SqlCommand() 
cmd.CommandType = System.Data.CommandType.Text 
cmd.CommandText = "DELETE FROM extract" 
cmd.Connection = sqlConnection1 
+0

Ух, я даже не могу использовать этот форум правильно! Я пробовал это: Dim sqlConnection1 как новый System.Data.SqlClient.SqlConnection («Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = | DataDirectory | \ CLI_CRVM.accdb») Dim cmd As New System.Data.SqlClient .SqlCommand cmd.CommandType = System.Data.CommandType.Text cmd.CommandText = "DELETE FROM экстракте" cmd.Connection = SQLConnection1 – user3850146

+0

Я попытался удалить одну строку, так: «Дим DataSet1 As New DataSet1() Dim extractTableAdapter As New DataSet1TableAdapters.extractTableAdapter() extractTableAdapter.Delete (1) extractTableAdapter.Update() ' – user3850146

+0

При работе с MS Access убедитесь, что все ваши команды SQL завершены ';'. IE, «DELETE FROM extract;». Без этого они не будут выполняться. – Steve

ответ

2

Вы пытаетесь использовать System.Data.SqlClient, но это специально для работы с базами данных Microsoft SQL Server. Пример кода в вашем вопросе не удастся с

Ключевое слово не поддерживается: «поставщик».

Для подключения OLEDB к базе данных Access используйте System.Data.OleDb.

+0

Спасибо за помощь - это был ключ. Однако, несмотря на то, что код работает, и я получаю возврат «10» из ExecuteNonQuery, строки не удаляются. Я могу запустить SQL вручную в БД. Есть идеи? – user3850146

+0

@ user3850146 Убедитесь, что ваш 'OleDbConnection' закрыт правильно. Считается хорошей формой для работы с вашим соединением внутри блока [Использование] (http://msdn.microsoft.com/en-ca/library/htd05whh.aspx). Я предпочитаю '.Close()' явно, хотя другие утверждают, что конец блока использования будет автоматически '.Close()' соединение для вас. –

+0

Вот что у меня есть: Dim sqlConnection As New System.Data.OleDb.OleDbConnection («Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = | DataDirectory | \ CLI_CRVM.accdb») Dim cmd As New System .Data.OleDb.OleDbCommand() cmd.CommandType = System.Data.CommandType.Text cmd.CommandText = "DELETE * FROM [extract];" cmd.Connection = SqlConnection дим intRC As Integer sqlConnection.Open() intRC = cmd.ExecuteNonQuery() «SQLConnection.close() МздВох (intRC) – user3850146