2016-04-02 2 views
1

Я новичок в C# и не знаю многого!Не удается создать строку подключения в C#

Я создал локальную базу данных на C# 2012 и хочу установить соединение с ней. Я проверил соединение с его мастером, и он сказал, что он успешно подключен к базе данных.

Поэтому я скопировал адрес строки подключения в свой код, но после нескольких секунд работы у меня есть ошибка исключения!

Я не знаю, где проблема!

Вот мой код:

System.Data.SqlClient.SqlConnection myConnection; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    myConnection = new System.Data.SqlClient.SqlConnection(); 
    myConnection.ConnectionString = "Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\\Users\\jack\\Documents\\Visual Studio 2012\\Projects\\dictionary\\dictionary\\dictionaryDb.mdf;Integrated Security=True;Connect Timeout=30"; 
    myConnection.Open(); 

    MessageBox.Show("successfully connected!"); 
} 

Это ошибка исключение:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

И мой другой вопрос: это разница между SQL Server Express и локальной базы данных в C#?

Спасибо

ответ

3

Похоже, вы пропустили один символ \ между (LocalDB) и v11.0:

myConnection.ConnectionString = "Data Source=(LocalDB)\\v11.0;AttachDbFilename=C:\\Users\\jack\\Documents\\Visual Studio 2012\\Projects\\dictionary\\dictionary\\dictionaryDb.mdf;Integrated Security=True;Connect Timeout=30"; 

один обратный слеш будет рассматривать в качестве экранирующего символа, два обратных слэша \\ будет рассматриваться как backslash. Альтернатива, это сделать (с помощью @), чтобы ваша строка символов понятнее:

myConnection.ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\jack\Documents\Visual Studio 2012\Projects\dictionary\dictionary\dictionaryDb.mdf;Integrated Security=True;Connect Timeout=30"; 

Вы также можете указать свой connectionString в вашем app.config<connectionStrings> <add name="DefautConnection" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\jack\Documents\Visual Studio 2012\Projects\dictionary\dictionary\dictionaryDb.mdf;Integrated Security=True;Connect Timeout=30;" .. и так далее, которые не редкость.

+0

о, спасибо Яну. Я думал, что двойная обратная косая черта просто для адреса! – Saeid

+0

сейчас работает :) Разница между локальной базой данных и sql express? – Saeid

+0

@ Базовая база данных Saeid означает, что ваше соединение с локальным компьютером (ПК, который вы используете). SQL express - это имя базы данных, а не машины, на которой размещена база данных. Фактически полное имя «SQL Server Express», имя базы данных «SQL Server» – Ian

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