Wie kann man überprüfen, ob eine Spalte einen bestimmten Wert hat

Ich habe eine MS SQL-database, wo es Feld wie:

  • referencenummer
  • businessid
  • Arbeitnehmer
  • Standortnamen
  • time
  • Beschreibung
  • Zitat

Mit dem gleichen Businessid kann es viele Reihen geben und mit demselben Refno gibt es viele Reihen. Aber mit demselben Refno und Businessid kann es nur eine Zeile geben. Jetzt kann es viele Zeilen mit demselben Businessid geben, aber ich möchte überprüfen, ob ein bestimmtes Refno in diesen Geschäften existiert oder nicht. Ich weiß, wie man überprüft, ob ein businessid in einer Tabelle existiert oder nicht. Aber ich bin verwirrt, wie zu überprüfen, dass businessid mit dem gleichen Namen haben eine bestimmte refno oder nicht.

string g = Session["businessid"].ToString(); string h = Session["referenceno"].ToString(); con.Open(); SqlCommand check = new SqlCommand("select * from quoted_price where businessid=@businessid", con); check.Parameters.AddWithValue("@businessid", g); SqlDataReader dr = check.ExecuteReader(); if (dr.HasRows) { con.Close(); } 

Sie haben ein großes Problem mit Ihrem Code. Sie sind nicht ordnungsgemäß Handhabung von objecten, die IDisposable implementieren. Sie müssen entweder einen Baustein oder das try / catch / endlich Muster verwenden, wo Sie die Bereinigung im finally Block behandeln. Das Versäumnis, dies zu tun, kann zu Verbindungen führen, die offen gelassen werden, und Sie können seltsam schwer zu diagnostizieren Fehler später zu laufen. Für jede class, die Sie verwenden (insbesondere wenn memoryplatz oder Netzwerkzugriff erforderlich ist), überprüfen Sie immer, ob es IDisposable implementiert.

Sie sollten auch darüber nachdenken, wenn Sie Ihre SqlConnection vs erstellen, wenn Sie Ihre Verbindung öffnen. Warum öffne die Verbindung, bevor du bereit bist, es zu benutzen?

Auch sollten variables die darin enthaltenen Informationen adäquat beschreiben. Vermeiden Sie mit nicht hilfreichen Namen wie g und h .

Und schließlich können Sie zwei Parameter verwenden, um die Bedingung zu überprüfen, die Sie überprüfen möchten.

 string businessId = Session["businessid"].ToString(); string referenceNo = Session["referenceno"].ToString(); bool hasRows = false; using(SqlConnection connection = new SqlConnection(parameters)) { using(SqlCommand checkCommand = new SqlCommand("select * from quoted_price where businessid=@businessid AND refno=@refno", connection)) { checkCommand.Parameters.AddWithValue("@businessid", businessId); checkCommand.Parameters.AddWithValue("@refno", referenceNo); connection.Open(); using(SqlDataReader dataReader = check.ExecuteReader()) { hasRows = dataReader.HasRows; } } } 

Beachten Sie, wie anstatt zu versuchen, eine Menge von Logik mit dem dataReader zu tun, dass ich gerade bekommen, was ich will von ihm und speichern Sie den Wert, den ich interessiere. Das ist, weil ich die Verbindung nicht länger als nötig lassen will.