2016-04-19 1 views
0

Je reçois une erreur d'exception pour mon code. S'il vous plaît aidez-moi - quel est le problème? (Je suis nouveau à ceci: /)Je ne peux pas ouvrir la connexion à la base de données locale

Ma base de données est une base de données locale.

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(); 
} 

Voici l'erreur d'exception:

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

Votre chaîne de connexion ne semble pas juste ... Cela pourrait être la question .. – Ian

+0

A SQL Base de données de serveur CE (fichier '.sdf') nécessite l'utilisation de' SqlCeConnection' et 'SqlCeCommand' - pas' SqlConnection' et 'SqlCommand' .... Merci –

+0

, mais je n'ai pas SqlCeConnection! comment je peux ajouter cette classe ?! – Saeid

Répondre

2

Puisque vous accédez à un fichier de base de données SQL Server Compact .sdf, vous voulez utiliser le SqlCeConnection et SqlCeCommand classes par opposition aux classes SqlConnection et SqlCommand, que vous utiliseriez pour les connexions SQL Server traditionnelles.

De plus, vous pouvez essayer d'utiliser le réglage Persist Security Info=False; au sein de votre chaîne de connexion à l'aide d'un exemple similaire à the ones mentioned on ConnectionStrings.com utilise

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

merci, mais je n'ai pas SqlCeConnection! comment je peux ajouter cette classe ?! – Saeid

+0

devrais-je utiliser la base de données basée sur le service ?! : p – Saeid

+0

Vous devriez pouvoir ajouter une référence à 'System.Data.SqlServerCe' dans votre projet. Si vous n'en avez pas, vous pouvez essayer d'installer [SQL Server Compact Design Tools ici] (https://www.microsoft.com/en-us/download/details.aspx?id=30709). Il est intéressant de considérer que [SQL Compact est obsolète] (https://connect.microsoft.com/SQLServer/feedback/details/776328/port-sql-compact-to-windows-rt#ctl00_MasterBody_upCommunityComments) en faveur de [LocalDB] (https://blogs.msdn.microsoft.com/sqlexpress/2011/07/12/introducing-localdb-an-improved-sql-express/). –