2012-04-19 6 views
2

J'apprends le C# de base en utilisant Visual Studio 2010 et je crée une application qui utilise une base de données de serveur SQL. L'application permet à un utilisateur de saisir du texte dans une zone de texte enrichi, d'appuyer sur un bouton, puis d'afficher les mots «stockés» dans la zone de texte 2. Ces mots stockés sont uniquement des mots avec *. J'ai mon fichier de base de données, mais je ne peux pas comprendre comment faire le code pour cela. Jusqu'à présent j'ai,Utilisation d'un fichier de base de données SQL Server

SqlConnection myConn = new SqlConnection(@"Server=.\SQLEXPRESS;AttachDbFilename='C:\datafile.mdf';Integrated Security=True;User Instance=True"); 
con.Open(); 
SqlCommand com = new SqlCommand("SELECT name FROM bbc", con); 
SqlDataReader sdr = com.ExecuteReader(); 
while (sdr.Read()) 
{ 
    this.txtbox2.Text.Add(sdr[""]); 
} 

c'est sous mon gestionnaire de bouton.

J'ai mon fichier de données mis en place il est juste le cas de vraiment comment le configurer pour obtenir des données de zone de texte 1 et l'afficher dans zone de texte 2

+0

Notez que vous vous connectez à la base de données master dans votre chaîne de connexion. Vous devez soit vous connecter à la base de données qui contient votre table bbc, soit mettre les informations de schéma complètes dans votre requête SQL. – duraz0rz

+0

ouais désolé, j'ai collé de mon ancien code, s'il vous plaît voir la mise à jour – user1300788

Répondre

0

J'utiliser quelque chose comme ceci:

//SQL Connection stuff here 
con.Open(); 
String queryStr = "SELECT name FROM bbc WHERE name LIKE '*%'"; 
SqlCommand com = new SqlCommand(queryStr, con); 
SqlDataReader sdr = com.ExecuteReader(); 

while(sdr.Read()) 
{ 
    this.textbox2.Text = sdr.GetValue(0).ToString(); 
} 

Il est beaucoup plus simple et généralement plus efficace de laisser limiter SQL résultats de votre requête.

+0

Je semble le obtenir cette erreur: Une exception non gérée de type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll Informations supplémentaires: An tentative de joindre une base de données nommée automatiquement pour le fichier C: \ datafile.mdf a échoué. Une base de données portant le même nom existe ou le fichier spécifié ne peut pas être ouvert ou se trouve sur le partage UNC. – user1300788

0

peut être quelque chose comme ceci:

StringBuilder builder = new StringBuilder(); 
while (sdr.Read()) 
{ 
    string value = sdr["name"].ToString(); 
    if(value.Contains("*")) 
     builder.Append(value); 
} 

this.txtbox2.Text = builder.ToString(); 
0

Si vous souhaitez seulement afficher les mots commençant par « * » - Ensuite, vous pouvez limiter votre base de données requête seulement les retourner:

SELECT name FROM bbc where name like '*%' 

Le caractère « % » est un caractère générique - ce qui signifie retour seulement des résultats st arting avec '*' et se terminant par n'importe quoi.

0

Peut-être les suivantes:

while (sdr.Read()) 
{ 
    string value = sdr["name"].ToString(); 
    if(value.StartsWith("*")) 
     txtbox2.Text += value; 
} 

A couple de points:

  • Mettez un à l'aide autour de la SqlConnection il automatiquement pour vous ferme.
  • J'ai remarqué que vous essayez de vous connecter à la base de données principale. Pourquoi?
  • Dave fait un bon point sur l'utilisation de la wildcard % pour limiter les résultats.
Questions connexes