2016-08-28 4 views
0

Ich versuche, eine boolesche Rückkehrfunktion zu erstellen, die den Wert aus dem Textfeld überprüfen würde, überprüfen Sie mit dem Datenleser aus einer Tabelle, ob sie eine Übereinstimmung gefunden haben oder nicht und Dann gebe ich einen booleschen Wert zurück. Ich habe diese Funktion schon seit einiger Zeit benutzt und es funktioniert gut.Probleme mit der Rückgabe boolescher Werte von einer Funktion

public Boolean testname() 
    { 
     Boolean test=false; 
     SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\noewayout\Documents\Project.mdf;Integrated Security=True;Connect Timeout=30"); 
     SqlCommand cmd = new SqlCommand("select CNAME from CUSTOMER", conn); 
     conn.Open(); 
     SqlDataReader dr = cmd.ExecuteReader(); 
     string cname = ""; 
     while (dr.Read()) 
     { 

      cname = Convert.ToString(dr["CNAME"]); 
      if (cname == textBox1.Text.ToString()) 
      { 
       test = true; 
       return test; 
      } 


     } 
     conn.Close(); 
     return test; 
    } 
    private void button1_Click(object sender, EventArgs e) 
    { 
     if (textBox1.Text == "") 
     { MessageBox.Show("Please type in Customer Name"); } 
     else 
     { 
      Boolean boo = testname(); 
      if (boo == false) 
      { 
       MessageBox.Show("Invalid Customer Name"); 
      } 
      else if (boo == true) 
      { 
       try 
       { 
        SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\noewayout\Documents\Project.mdf;Integrated Security=True;Connect Timeout=30"); 
        SqlCommand cmd = new SqlCommand("select ONAME,PRICE,QTY from OIL_TYPE,SALEOIL,CUSTOMER where OIL_TYPE.OID=SALEOIL.OID and CUSTOMER.CID=SALEOIL.CID and CNAME='" + textBox1.Text.ToString() + "'", conn); 
        conn.Open(); 
        SqlDataReader dr = cmd.ExecuteReader(); 
        int qty = 0; 
        int price = 0; 
        string oname = ""; 
        while (dr.Read()) 
        { 
         oname = Convert.ToString(dr["ONAME"]); 
         qty = Convert.ToInt32(dr["QTY"]); 
         price = Convert.ToInt32(dr["PRICE"]); 
         int tcost = qty * price; 
         MessageBox.Show("Oil Name\t\tQuantity\tPrice\tTotal Cost\n" + oname + " \t" + qty + "\t" + price + "\t" + tcost); 
        } 
        conn.Close(); 
       } 
       catch (SqlException) { MessageBox.Show("Error!!"); } 
      } 
     } 
    } 

Allerdings habe ich Probleme mit dieser einfachen Check-Methode für die letzten paar Stunden.

public Boolean testname() 
    { 
     Boolean test = false; 
     SqlConnection conn = new SqlConnection(dbsource); 
     SqlCommand cmd = new SqlCommand("select Fid from Firearm", conn); 
     conn.Open(); 
     SqlDataReader dr = cmd.ExecuteReader(); 
     string tfid = ""; 
     while (dr.Read()) 
     { 

      tfid = Convert.ToString(dr["Fid"]); 
      if (tfid == textBox6.Text.ToString()) 
      { 
       test = true; 
       return test; 
      } 


     } 
     conn.Close(); 
     return test; 
    } 
    private void searchbtn_Click(object sender, EventArgs e) 
    { 

      string mysql = "select * from Firearm where Fid= '" + textBox6.Text + "'"; 

      if (textBox6.Text == "") 
      { MessageBox.Show("Please fill the text field"); } 
      else 
      { 
       Boolean boo = testname(); 
       if (boo == false) 
       { 
        MessageBox.Show("Invalid Fid"); 
       } 
       else if (boo == true) 
       { 
        try 
        { 
         SqlConnection conn = new SqlConnection(dbsource); 
         SqlCommand cmd = new SqlCommand(mysql, conn); 
         SqlDataAdapter sda = new SqlDataAdapter(cmd); 
         DataTable dt = new DataTable(); 
         sda.Fill(dt); 
         dataGridView1.AutoGenerateColumns = true; 
         dataGridView1.DataSource = dt; 

         dataGridView1.Show(); 
        } 
        catch (SqlException) { MessageBox.Show("Error!!!"); } 
       } 
      } 
    } 

Es hielt falsche Rückkehr, obwohl ich die richtige ID eingegeben value.I've alles versucht, die ich kenne weg, aber immer noch keine go.Any Hilfe oder Vorschlag wäre great.Thanks

+0

Ist Ihr Fid Spalte Datentyp 'char' oder' nchar' statt 'varchar'? –

+0

Sie müssen nicht .ToString() auf txtBox.Text -Eigenschaft als Text-Eigenschaft ist bereits von String-Typ –

+0

@Manish Dalal Ja, Fid ist varchar (20) und ich habe auch versucht, .ToString(), aber es ist immer noch falsch zurückkehrend. – noeway

Antwort

2

Versuchen zu vergleichen wie unten

if (tfid.Trim() == textBox6.Text.Trim())

+0

Vielen Dank, es hat funktioniert. – noeway

+0

. Vielen Dank für die Hilfe. Sie haben gerade die Stunden lang Kopfschmerzen von mir beendet. Aber warum würde es mit Trimmen funktioniert, aber nicht mit normalen Vergleich von mir? Und ja, beide Tabellen verwenden unterschiedliche Datenbank und CNAME verwendet "nvarchar" und Fid verwendet "varchar". Denken Sie, dass das etwas damit zu tun haben. – noeway

Verwandte Themen