Ключевое слово не поддерживается: "поставщик". Открытие SqlConnection
Я не знаю, почему эта ошибка, я все перепробовал. Я хочу подключить свою webForm к базе данных .accdb, и когда я использую с помощью() {}, я получил эту ошибку "Ключевое слово не поддерживается:" поставщик "Вот код:
web.config
<connectionStrings>
<add name="ConnectionString"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Manuel_2\Documents\Login.accdb"
providerName="System.Data.OleDb" />
</connectionStrings>
WebForm1
private static string conDB =
ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection(connDB)) //here is the error
{
// .....
}
}
Ответы
Ответ 1
Алексей Мыньков прав. Но здесь более подробно, так как вам нужно больше разъяснений.
Ваш web.config в порядке. Строка сгенерированная автоматически Visual Studio использует правильную настройку. Вместо этого в вашем файле webform1 вам нужно сделать 2 вещи.
-
Добавьте using System.Data.OleDb.OleDbConnection;
в начало файла и удалите using System.Data.SqlConnection;
-
Измените свой код webform1 следующим образом:
private static string conDB = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
using (OleDbConnection con = new OleDbConnection(connDB)) //here is the error
{
}
}
Ответ 2
Я знаю, что это несколько старый поток и уже ответил, но я добавляю свое решение для дальнейшего использования
У меня есть база данных SQL Server 11.0, и я столкнулся с ошибкой, когда пытался работать с ней в приложении SharePoint, я не пробовал другие предлагаемые ответы, но я просто удалил часть "Provider" (и переупорядочил), поэтому моя строка подключения выглядела так:
Provider=SQLOLEDB.1;Password=DBPassword;Persist Security Info=True;User ID=sa;Initial Catalog=DBName;Data Source=DBServer
Теперь выглядит так:
Data Source=DBServer;Initial Catalog=DBName;Persist Security Info=True;User ID=sa;Password=DBPassword;
И он работал просто отлично
Ответ 3
Вы должны использовать System.Data.OleDb.OleDbConnection
.
Ответ 4
Я нашел здесь ошибку (и аналогичную) во время работы в Visual Studio и передал имя диспетчера подключений в качестве параметра задачи Script для определения своей строки подключения. Использование метода ConnectionString
приводит к соединению с большим количеством элементов (или значений/пар), чем ожидалось (включая поставщика). Ожидаемая строка подключения в моем случае требует только источника данных, исходного каталога и встроенной безопасности.
Есть два варианта решения этой проблемы. Первое, что на самом деле не работало для меня, но надеюсь, что это сработает для вас, должно было сделать следующее:
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(Dts.Connections[connMgrName].ConnectionString);
string connectionString = builder.DataSource + ";" + builder.InitialCatalog + ";" + builder.IntegratedSecurity;
Я надеюсь, что это работает для вас, потому что вы решаете проблему в нескольких строках кода. Однако вариант, который работал у меня, состоял в том, чтобы воссоздать мою строку соединения, только выбрав значение/пары, необходимые для базы данных:
string connectionString = Dts.Connections[connMgrName].ConnectionString; // ConnectionString will contain unsupported keywords like 'provider'
connectionString = connectionString.Trim(';'); // Remove the trailing semicolon so that when we perform the split in the following line, there are no index errors.
var connStrDictionary = connectionString.Split(';').Select(x => x.Split('=')).ToDictionary(x => x[0], x => x[1]); // Here we get each value-pair from connection string by splitting by ';', then splitting each element by '=' and adding the pair to a Dictionary.
try
{
connectionString = "Data Source=" + connStrDictionary["Data Source"] + ";Initial Catalog=" + connStrDictionary["Initial Catalog"] + ";Integrated Security=" + connStrDictionary["Integrated Security"]; // Build the actual connection string to be used.
}
catch(KeyNotFoundException)
{
Console.WriteLine("\t\tNot able to build the connection string due to invalid keyword used. Existing keywords and their values:");
foreach( KeyValuePair<string, string> kvp in connStrDictionary)
{
Console.WriteLine("\t\t\tKey = '{0}', Value = '{1}'", kvp.Key, kvp.Value);
}
}
Надеюсь, это поможет. Удачи!
Ответ 5
Хорошо, я знаю, что это довольно старый, и я знаю, что ответ был прямо перед моим лицом все время, но я хотел бы подчеркнуть, что один параметр, который меня испортил, потому что он отсутствовал, был providerName="System.Data.OleDb"
. На всякий случай, если кто-то еще смотрит на это так же тупо, как и я.
Ответ 6
введите описание изображения здесь Привет всем, я прочитал все сверху, и попытался, бу
Ответ 7
Я прочитал все выше, я попробовал все, и все еще дает мне эту ошибку? Я пытаюсь подключить SQL Server к Visual Studio 2019 для отображения таблицы данных сетки? Спасибо !
Это ошибка