2016-04-22 11 views
3

Ich bin vertraut mit der Verbindung zu Datenbanken in VB.NET, um Daten zu erhalten, aber ich habe dieses Mal eine etwas andere Aufgabe. In der Vergangenheit habe ich die Datenbank getroffen, um Werte aus einer Tabelle für meine Anwendung zu erhalten (Namen, Adressen, Preise usw.), aber jetzt muss ich einfach auf die Datenbank zugreifen, um zu überprüfen, ob ein Wert existiert. Ich kenne den besten Weg nicht. Gibt es eine gute und effiziente Möglichkeit, dies zu tun, ohne tatsächlich Daten aus der Datenbank zu erhalten?Wie überprüft man am besten, ob ein Wert in einer Datenbank in VB.NET existiert?

Zur weiteren Klärung möchte ich überprüfen, ob ein bestimmter Code in der Datenbank vorhanden ist, wenn der Benutzer einen Wert in ein Textfeld eingibt (dies ist ein ASP.NET-Website-Projekt). Wenn der Code existiert, werde ich den Benutzer über ein Popup-Fenster informieren.

EDIT:

Wenn ich eine gespeicherte Prozedur in SQL Server erstellen, die true zurückgibt, wenn der Wert oder falsch liegt vor, wenn es nicht (oder 0 oder 1) der Fall ist, wie kann ich den Rückgabewert in VB verwenden. NETZ?

+0

Sie so etwas wie 'select count (*) als Record aus der Tabelle, wo Spalte = something' und dann Logik in Ihrer VB App basierend auf der' ausführen tun konnte RecordCount' zurückgegeben. – mituw16

+0

Können Sie uns sagen, welche Datenbank Sie benutzen? Es gibt verschiedene Möglichkeiten für diese Aufgabe, abhängig von der db und jemand von ihnen sind wirklich schnell andere sind nicht wirklich empfohlen, wenn Sie viele Datensätze haben – Steve

+0

@Steve Es ist eine SQL Server-Datenbank. Ich dachte, ich hätte das erwähnt. Entschuldigen Sie. – ic3man7019

Antwort

3

Wenn Sie den Primärschlüsselwert oder einen anderen eindeutigen Wert Ihrer Tabelle wissen, der schnellste Weg, ich weiß, das überprüfen Vorhandensein oder Nichtvorhandensein eines bestimmten Datensatz ist der folgende

Dim cmdText = "IF EXISTS(SELECT 1 FROM yourTable WHERE idField = @value) " & _ 
       "SELECT 1 ELSE SELECT 0" 

Using cnn = new SqlConnection(.....) 
Using cmd = new SqlCommand(cmdText, cnn) 
    cnn.Open() 
    cmd.Parameters.Add("@value", SqlDbType.Int).Value = 9876 
    Dim result = Convert.ToInt32(cmd.ExecuteScalar()) 
    Dim exists = IF result = 1, True, False 
    .... 
End Using 
End Using 

Dieser Ansatz vorzuziehen ist, die Datensätze zu zählen, die Ihren Zustand übereinstimmen, da der Datenbank-Engine unmittelbar nach der Überprüfung zurück frei ist, wenn die Bedingung gewesen abgestimmt, anstatt bis zum Ende des Tisches zu zählen. Aber natürlich ist es äußerst wichtig, dass das Feld, auf dem Sie die Suche ausführen, indiziert ist.

Einige Informationen über die EXISTS operator auf MSDN

+0

Danke für die ausführliche Antwort! Ich werde es jetzt testen. – ic3man7019

+0

Sie würden nicht zufällig wissen, wie man diese VB nennt.NET-Funktion von der Client-Seite, würden Sie (JavaScript)? – ic3man7019

+0

Tut mir leid, ich weiß sehr wenig von JavaScript – Steve

2

SELECT COUNT (*) FROM YourTableName WHERE CODE = @CODE

+1

Schöne Lösung, der Ausführungsplan ist besser. – Codexer

1

ich hier etwas fehlt möglicherweise, da es zu einfach scheint! Es klingt wie alles, was Sie wollen, ist eine einfache SQL-Abfrage in den Zeilen von Feld aus Tabelle auswählen, wo Feld = Wert. Die Ausführung des Befehls sollte die Anzahl der ausgewählten Zeilen zurückgeben. Wenn Return größer als 0 ist, existiert das Element.

Sie füttern den Wert mit dem Element in das Textfeld eingegeben, wenn der SQL-Befehl zur Laufzeit erstellt wird.

Entschuldigung, wenn ich Gipfel vermisse!

VB.net KB auf laufende gespeicherte Procs von VB.net:-

Running SPs from VB.net

+0

Ich hätte klarer sein sollen. Deine Antwort ist nicht falsch. Ich habe mich nur gefragt, ob dies der beste Weg ist, um das Ziel zu erreichen. Ich werde die Frage bearbeiten. Danke für deine Antwort. – ic3man7019

+0

No Probs - Ich werde mich in Computerhöhle hineinziehen und VB laden, um mir ein Beispiel für die Ausführung eines SP als Funktion zu geben - es ist einfach, aber ich kann mich nicht mehr an die Syntax von oben erinnern - alt werden! –

Verwandte Themen