Вставить в SQL из файла MDB - PullRequest
0 голосов
/ 04 ноября 2019
string sqlConnectionString = String.Format(@"Data Source={0};Initial Catalog={1};Integrated Security=True;MultipleActiveResultSets=True", server, database);
string mdbConnectionString = String.Format(@"Provider=Microsoft.JET.OLEDB.4.0;data source={0};", @"C:\test\test.mdb");

using (var mdbConnection = new OleDbConnection(mdbConnectionString))
using (var sqlConnection = new SqlConnection(sqlConnectionString))
{
    mdbConnection.Open();
    sqlConnection.Open();

    // Empty table
    var sqlQuery = String.Format("DELETE FROM Languages");
    var sqlCommand = new SqlCommand(sqlQuery, sqlConnection);
    sqlCommand.ExecuteNonQuery();

    // Fill table with new information
    sqlQuery = String.Format("INSERT INTO Languages (ID, lang) " +
                             "SELECT ID, lang " +
                             "FROM OPENROWSET('" + mdbConnection.Provider + "', '" + mdbConnection.DataSource + "'; 'admin'; '', Languages)");
     sqlCommand = new SqlCommand(sqlQuery, sqlConnection);
     sqlCommand.ExecuteNonQuery();
}

Второй sqlCommand выдает эту ошибку при вызове ExecuteNonQuery:

System.Data.SqlClient.SqlException: «Экземпляр поставщика OLE DB» Microsoft.JET.OLEDB.4.0 'не может быть создан для связанного сервера' (null) '.' '.

Чего мне не хватает?

1 Ответ

0 голосов
/ 06 ноября 2019

Вам нужен код перед существующим кодом, который вы показываете, чтобы установить имена сервера и базы данных для сервера sql. Убедитесь, что оно у вас есть, и что имя сервера и имя базы данных указаны правильно.
Имя сервера обычно может быть либо текстовым, либо IP-адресом (но оставляйте кавычки вокруг строки, например: «10.1.99.21»

Dim server as String
Dim database as String
server = "mySqlServerName"
database = "myDatabaseName"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...