2009-09-17 7 views
0

zone de texte set1 = 1 à 30 = dans la requête name = br1id à br30idCréer une boucle qui va éditer 60 noms de TextBox?

textbox set 2 = 1 à 30 = dans la sortie de résultat

je ne comprends pas comment créer une boucle basée sur 30 différents noms de zone de texte?

Je ne peux pas copier coller ces lignes 30 fois en modifiant les noms des zones de texte, ce qui semble faux.

try 
{ 

    MySqlConnection mysqlCon = new MySqlConnection(
     "server= 195.159.253.229;" + 
     "Database = bruker;" + 
     "user id=bobby;" + 
     "password=LoLOW###;"); 

    MySqlCommand cmd1 = new MySqlCommand(
     "SELECT brukernavn From bruker where ID = '" + br1id.Text + "';", mysqlCon); 

    mysqlCon.Open(); 

    navX[0] = cmd1.ExecuteScalar().ToString(); 
    br1txt3.Text = navX[0]; 
} 
+3

Pourquoi, au nom de tout ce qui est bon et saint, avez-vous 600 boîtes de texte? –

+2

Je ne peux pas le vérifier mais j'espère pour vous que votre identifiant et votre mot de passe ne fonctionnent pas. – ZippyV

+0

je n'ai pas 600 j'ai 60, mais le problème est toujours le même, j'ai utilisé 600 juste pour magnefier le problème: P, la boucle est de remplir des boîtes de texte avec des valeurs dans un DB dans un outil im travail pour les statistiques raisons, il faisait froid 600 si je voulais: P. et pas ZippyV ofc le login est bougus, mais je recon beaucoup de script kiddies déjà en train d'essayer et j'ai hâte d'essayer d'obtenir des informations de la fausse db. – Darkmage

Répondre

3

Vous voudrez utiliser un énumérateur de contrôle.

En supposant que cela est WinForms:

foreach(Control c in this.Controls) { 
    if(c is TextBox) 
     Console.WriteLine(c.Text); 
} 

Et en fait, je pense que cela va travailler pour ASP.Net, aussi. (Même si Control est dans un espace de noms différent.)

CEPENDANT !: C'est ce à quoi a été faite une grille de données.

+0

ouais je pensais à enums c'est prolly le chemin j'ai besoin de marcher ouais. – Darkmage

1

Vous devriez vraiment reconsidérer votre conception si vous avez 600 TextBox contrôles. Vache sacrée

En outre, votre SQL est très soumis à SQL injection. Ce que vous cherchez à spécifiquement ne peut pas être fait, car il n'y a pas d'évaluation dynamique de C# au moment de l'exécution. Ce que vous devez faire est de créer une collection des contrôles que vous voulez utiliser - dans l'ordre que vous voulez les utiliser - puis énumérer sur cette liste à utiliser dans votre requête. Cependant, cette requête doit absolument être réécrite pour utiliser les paramètres.

0

Voici comment obtenir un contrôle par son nom dans un formulaire:

 // get control by name: 
     TextBox tb = this.Controls["textBox1"] as TextBox; 
     if (tb != null) { 
      // your code here 
     } 
0

Oui à toutes les réponses précédentes, (? 600 textboxes 600 pour Ids et 600 autres pour les résultats de la requête), mais si vous voulez vraiment Pour ce faire, en tant que technique, changez aussi le SQL à:

StringBuilder sb = new StringBuilder(
     "SELECT brukernavn From bruker where ID In ("); 
foreach(Textbox tb in IdTextboxes) sb.Append(tb.Text + ","); 
string SQL = sb.ToString(0,sb.Length - 1) + ")"; 

MySqlConnection mysqlCon = 
    new MySqlConnection("server=195.225.0.218; " + 
      "Database = bruker; user id=huggy; password=LoLOW;"); 
cmd1 = new MySqlCommand(SQL, mysqlCon); 
+0

thx jettera un oeil à changer ma requête Sql dans le code :) – Darkmage

Questions connexes