2016-04-19 7 views
0

Я получаю ошибку исключения для моего кода. Пожалуйста, помогите мне - в чем проблема? (Я новичок в этом: /)Я не могу открыть подключение к локальной базе данных

Моя база данных - это локальная база данных.

SqlConnection myconnection; 

private void insertBtn_Click(object sender, EventArgs e) 
{ 
     myconnection = new SqlConnection(); 
     myconnection.ConnectionString = "Data Source=C:\\Users\\Saeed\\Documents\\Visual Studio 2012\\Projects\\dictionary1\\dictionary1\\Database1.sdf"; 
     myconnection.Open(); 
     //string query = "INSERT INTO dictionary (id,enWord,faWord) VALUES (4,'pen','خودكار')"; 
     //SqlCommand cmd = new SqlCommand(query, myconnection); 
     //cmd.ExecuteNonQuery(); 
} 

Здесь ошибка исключение:

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: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

+1

строка подключения не выглядит правильно ... Это может быть проблема .. – Ian

+0

SQL- База данных сервера CE (файл .sdf) требует использования 'SqlCeConnection' и' SqlCeCommand', а не 'SqlConnection' и' SqlCommand' .... –

+0

thankyou, но у меня нет SqlCeConnection! как я могу добавить этот класс ?! – Saeid

ответ

2

Поскольку вы обращаетесь к Compact Database .sdf файл SQL Server, вы хотите использовать SqlCeConnection и SqlCeCommand классы, а не классы SqlConnection и SqlCommand, которые вы использовали бы для традиционных соединений SQL Server.

Кроме того, вы можете попробовать использовать параметр Persist Security Info=False; в строке подключения, используя пример, аналогичный the ones mentioned on ConnectionStrings.com использованием

private void insertBtn_Click(object sender, EventArgs e) 
{ 
    // Open your connection 
    using(var myConnection = new SqlCeConnection(@"Data Source=C:\Users\Saeed\Documents\Visual Studio 2012\Projects\dictionary1\dictionary1\Database1.sdf;Persist Security Info=False;")) 
    { 
     // Build your query 
     var query = "INSERT INTO dictionary (id,enWord,faWord) VALUES (4,'pen','خودكار')" 
     // Build a command to execute 
     using(var myCommand = new SqlCeCommand(query,myConnection)) 
     { 
       // Open your connection 
       myConnection.Open(); 
       // Execute your query 
       myCommand.ExecuteNonQuery(); 
     } 
    } 
} 
+0

thankyou, но у меня нет SqlCeConnection! как я могу добавить этот класс ?! – Saeid

+0

Должен ли я использовать сервисную базу данных ?! : p – Saeid

+0

Вы должны иметь возможность добавить ссылку на 'System.Data.SqlServerCe' в своем проекте. Если у вас их нет, вы можете попробовать установить [SQL Server Compact Design Tools здесь] (https://www.microsoft.com/en-us/download/details.aspx?id=30709). Стоит учитывать, что [SQL Compact устарел] (https://connect.microsoft.com/SQLServer/feedback/details/776328/port-sql-compact-to-windows-rt#ctl00_MasterBody_upCommunityComments) в пользу [LocalDB] (https://blogs.msdn.microsoft.com/sqlexpress/2011/07/12/introducing-localdb-an-improved-sql-express/). –

-1

строка подключения неверна. Это должно выглядеть примерно так:

"Persist Security Info=False;Integrated Security=true;Initial Catalog=YOUR_DATABASE_NAME;server=(local)"

Смотрите здесь для получения дополнительной информации о строках подключения: https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring(v=vs.110).aspx