2011-06-08 4 views
1

Je n'arrive pas à me connecter à ma base de données locale. Chaque fois que je l'exécute, il me donne une fenêtre vide (fenêtres de ligne de commande vides).Connexion C# et SQL Server

Qu'est-ce qui me manque?

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Data.SqlClient; 

namespace dbtest1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string myConnectionString = "Initial Catalog=myDB;Data Source=localhost;Integrated Security=SSPI;"; 
      SqlConnection myConnection = new SqlConnection(myConnectionString); 
      string myInsertQuery = "INSERT INTO tts (min, max, average, lh, stdev, main_id) Values(5,5,5,'ASU',5,55)"; 
      SqlCommand myCommand = new SqlCommand(myInsertQuery); 
      myCommand.Connection = myConnection; 
      myConnection.Open(); 
      myCommand.ExecuteNonQuery(); 
      myCommand.Connection.Close(); 
     } 
    } 
} 

quand je lance le débogage, il me donne une erreur à myConnection.Open();

SqlException was unhandled: 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)

+1

Vous n'êtes pas en fait sortir quelque chose à la fenêtre de la console, ce qui explique pourquoi il est vide. Quelle erreur réelle obtenez-vous? –

+0

lorsque je lance le débogage, il me donne une erreur à myConnection.Open(); SqlException was unhandled: Une erreur liée au réseau ou à une instance spécifique s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible. Vérifiez que le nom d'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: Named Pipes Provider, erreur: 40 - Impossible d'ouvrir une connexion à SQL Server) –

Répondre

3

votre serveur SQL n'est pas configuré pour parler sur TCP/IP (qui est ce que localhost implique)

Vous pouvez changer votre chaîne de connexion à utiliser (local) au lieu de localhost (note: les crochets sont importants.) Comme ceci:

Data Source=(local); 

ou

vous pouvez configurer votre serveur SQL pour accepter les connexions TCP/IP.

Ouvrez SQL Server Confuguration Gestionnaire et accédez à Configuration réseau SQL Server -> Protocoles pour

Sur la droite vous verrez une liste de protocoles tels que la mémoire partagée, les canaux nommés, TCP/IP, etc. Assurez-vous que TCP/IP est activé. (Faites un clic droit et sélectionnez « Activer »)

Vous mentionnez ailleurs, vous utilisez SQL Server Express, dans ce cas, votre source de données doit également inclure le SQLEXPRESS nom d'instance, comme ceci:

Data Source=localhost\SQLEXPRESS 
+0

ça marche !! Merci –

+0

@JohnRyann s'il vous plaît indiquer laquelle des suggestions a travaillé, le premier ou le deuxième – flexxxit

1

Je parie que les travaux d'application. Avez-vous vérifié la base de données pour voir si les valeurs sont insérées?

La fenêtre de ligne de commande vide est probablement due au fait que vous avez défini le type de projet en tant que projet de console Windows.

Peut-être ajouter un Console.WriteLine("No worries!"); à la fin de la méthode principale.

+3

Avec 'Console.ReadKey();' après cela, la console ne disparaît pas tout de suite. –

+0

J'ai vérifié la base de données et il n'y a pas de nouvelle insertion d'enregistrement. l'application ne fonctionne pas, évidemment, quelque chose ne va pas. les fenêtres surgissent ne disparaissent pas. il reste là. cela se passe réellement sur myConnection.Open(). –

+0

Je suis en fait en utilisant SQL Server édition compacte (sqlexpress) –