2015-12-23 3 views
2

Я пытаюсь подключиться к моему файлу .MDF, но я не могу его выполнить. Я пробовал различные варианты строк соединения, но все же получал эту же ошибку.Ключевое слово не поддерживается: 'attachdbfilename' - Файл базы данных MDF (C#)

Это моя строка соединения с app.config

<connectionStrings> 
    <add name="DBConnection" 
     connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\iseo-db.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

и это, как я называю эту строку соединения

private string connection = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ToString(); 

SqlCeConnection con = new SqlCeConnection(connection); 

Когда каждый я пытаюсь выполнить я получаю исключение, говоря

Ключевое слово не поддерживается: 'attachdbfilename'

Я бы очень признателен за любую помощь по этой проблеме.

+1

'.mdf' - файл базы данных для ** полного ** SQL Server - ** NOT ** SQL Server ** CE **. И полный SQL Server поддерживает 'AttachDbFileName =' оператор ** только ** в выпуске SQL Server ** Express **. Для SQL Server ** CE ** вам необходимо использовать '.файл базы данных sdf' и другое имя поставщика в вашей строке соединения тоже –

ответ

1

Насколько я знаю, SQL-сервер CE не использует файлы mdf, а не sdf. Кроме того, вам не обязательно использовать свойство AttachDbFilename, а затем просто используйте свойство Data Source=....

<add name="DBConnection" 
     connectionString="Data Source=|DataDirectory|/iseo-db.sdf;Integrated Security=True" 
     providerName="System.Data.SqlServerCe.4.0" /> 

Некоторые вещи, подобные этому, должны делать трюк.

EDIT

Согласно @marc_s, поставщик данных также должен быть изменен на: System.Data.SqlServerCe.4.0

+1

Ошибка «имя поставщика» - это должно быть «providerName =» System.Data.SqlServerCe.4.0 «для SQL Server CE 4.0 –

+0

Да, ваш правильный. – BendEg

+0

@ просто отличные парни теперь все отлично работает –

0

Вы должны использовать SqlConnection, если вы используете LocalDB. LocalDB не является компактной версией SQL Server. Это полный SQL Server.

Компактное издание устарело, и вы не должны его использовать. В документации, вы можете использовать LocalDB, если хотите базу данных локального файла так же, как компактную версию. Но он работает с полным поставщиком SQL Server. Вот почему вы получаете это исключение.

Ваша конфигурация в порядке. Вам просто нужно изменить код создания соединения, чтобы использовать SqlConnection вместо SqlCeConnection.

private string connection = System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ToString(); 

SqlConnection con = new SqlConnection(connection); 

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

0

Поскольку вы используете файл .mdf, вы не можете использовать SqlCeConnection, вместо этого вы должны использовать SqlConnection для подключения к базе данных. Для этого вам необходимо использовать System.Data и System.Data.SqlClient.

private string connection ="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\iseo-db.mdf;Integrated Security=True" 

SqlConnection con = new SqlConnection(connection); 

Убедитесь, что вы не используете SqlCe в любом месте вашего кода.