2016-05-29 8 views
0
 private void searchButton_Click(object sender, EventArgs e) 
    { 
     string constring = "datasource=localhost;port=3306;Initial Catalog = 'dbcpu'; username = root; password ="; 
     string query = "select * from admin where UserID='" + maskedTextBox1.Text + "'"; 

     MySqlConnection conDataBase = new MySqlConnection(constring); 
     MySqlCommand cmdDataBase = new MySqlCommand(query, conDataBase); 
     MySqlDataReader myReader; 

     try 
     { 
      conDataBase.Open(); 
      myReader = cmdDataBase.ExecuteReader(); 

      while (myReader.Read()) 
      { 
       string Idnum = myReader.GetString(myReader.GetOrdinal("UserID")); 
       label1.Text = Idnum; 

       string Lname = myReader.GetString(myReader.GetOrdinal("UserLname")); 
       Lname1.Text = Lname; 

       string Fname = myReader.GetString(myReader.GetOrdinal("UserFname")); 
       Fname1.Text = Fname; 

       string Mname = myReader.GetString(myReader.GetOrdinal("UserMname")); 
       Mname1.Text = Mname; 

       string Gender = myReader.GetString(myReader.GetOrdinal("UserGender")); 
       Gend1.Text = Gender; 

       string Pos = myReader.GetString(myReader.GetOrdinal("Administrative")); 
       Pos1.Text = Pos; 

       string Dept = myReader.GetString(myReader.GetOrdinal("UserDepartment")); 
       Off1.Text = Dept; 

       byte[] imgg = (byte[])(myReader["IDPicture"]); 
       if (imgg == null) 
        pictureBox1.Image = null; 
       else 
       { 
        MemoryStream mstream = new MemoryStream(imgg); 
        pictureBox1.Image = Image.FromStream(mstream); 
       } 
      } 
      conDataBase.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

Ich darf nur die ID-Nummer suchen. Ich wollte auch den Nachnamen oder Vornamen in der gleichen Box suchen und es wird mir das Ergebnis geben. Ich denke es geht irgendwo in die Abfrage. Danke im Voraus. : DMehrere Suche in einem Textfeld Mein sql C#

Antwort

0

Sie können int.TryParse verwenden, um die Eingabe als Integer-ID zu validieren. Andernfalls verwenden Sie sie als Vornamen/Nachname. Ich habe Ihren Code so geändert, dass er Befehlsparameter enthält, um Injektionen zu vermeiden.

private void searchButton_Click(object sender, EventArgs e) 
{ 
    string constring = "datasource=localhost;port=3306;Initial Catalog = 'dbcpu'; username = root; password ="; 

    string whereCondition = "WHERE UserFname = @SearchInput OR UserLname = @SearchInput"; 
    int searchId = 0; 
    if(int.TryParse(maskedTextBox1.Text, out searchId)) 
     whereCondition = "WHERE UserID = @SearchInput"; 


    string query = "select * from admin " + whereCondition; 

    MySqlConnection conDataBase = new MySqlConnection(constring); 
    MySqlCommand cmdDataBase = new MySqlCommand(query, conDataBase);      
    cmdDataBase.Parameters.AddWithValue("@SearchInput", maskedTextBox1.Text);  


    MySqlDataReader myReader; 

    try 
    { 
     conDataBase.Open(); 
     myReader = cmdDataBase.ExecuteReader(); 

     while (myReader.Read()) 
     { 
      string Idnum = myReader.GetString(myReader.GetOrdinal("UserID")); 
      label1.Text = Idnum; 

      string Lname = myReader.GetString(myReader.GetOrdinal("UserLname")); 
      Lname1.Text = Lname; 

      string Fname = myReader.GetString(myReader.GetOrdinal("UserFname")); 
      Fname1.Text = Fname; 

      string Mname = myReader.GetString(myReader.GetOrdinal("UserMname")); 
      Mname1.Text = Mname; 

      string Gender = myReader.GetString(myReader.GetOrdinal("UserGender")); 
      Gend1.Text = Gender; 

      string Pos = myReader.GetString(myReader.GetOrdinal("Administrative")); 
      Pos1.Text = Pos; 

      string Dept = myReader.GetString(myReader.GetOrdinal("UserDepartment")); 
      Off1.Text = Dept; 

      byte[] imgg = (byte[])(myReader["IDPicture"]); 
      if (imgg == null) 
       pictureBox1.Image = null; 
      else 
      { 
       MemoryStream mstream = new MemoryStream(imgg); 
       pictureBox1.Image = Image.FromStream(mstream); 
      } 
     } 
     conDataBase.Close(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

Normalerweise wird ein Suchmittel ‚LIKE SearchInput‘ mit SearchInput von ‚%‘ + maskedTextBox1.Text + ‚%‘ anstatt gleich ‚=‘ mit – akazemis

+0

Ja, das ist ein guter Punkt, aber ich gab eine Antwort, er könne basierend auf seinem Bedarf ausarbeiten. –