2017-08-18 34 views
0

Ich habe eine SQL-Tabelle, die ein Wort speichert und ich muss überprüfen, ob das Wort bereits existiert und ich so, ich sollte eine Nachricht erhalten, dass das Wort bereits existiert. Ist es möglich? Wenn ja, wie soll ich das machen? Ich werde es unter Myccode lassen, um das Wort für die SQL hinzuzufügen, aber wenn Sie etwas anderes benötigen, werde ich Ihnen ohne jedes Problem zur Verfügung stellen.Verifing, wenn Text bereits existiert

string conn = ConfigurationManager.ConnectionStrings["test"].ConnectionString; 
using (SqlConnection sqlConn = new SqlConnection(conn)) 
    { 
    sqlConn.Open(); 
    string sqlQuery = @"INSERT INTO testetiposdestados(CDU_ESTADOS) VALUES(@estados)"; 
    SqlCommand SQLcm = new SqlCommand(); 
    SQLcm.Connection = sqlConn; 
    SQLcm.CommandText = sqlQuery; 
    SQLcm.CommandType = CommandType.Text; 
    SQLcm.Parameters.AddWithValue("@estados", textBox1.Text); 
    SQLcm.ExecuteNonQuery(); 
    sqlConn.Close(); 
} 

Ich verwende C#

Antwort

1

Sie mögen IF NOT EXIST statment verwenden können, so

IF NOT EXISTS (SELECT * FROM testetiposdestados 
    WHERE CDU_ESTADOS = @estados) 
BEGIN 
    INSERT INTO testetiposdestados(CDU_ESTADOS) VALUES(@estados) 
END 

Ihre Anfrage wird werden:

string sqlQuery = 
    @"IF NOT EXISTS(SELECT * 
        FROM testetiposdestados 
        WHERE CDU_ESTADOS = @estados) 
    BEGIN 
     INSERT INTO testetiposdestados(CDU_ESTADOS) 
      VALUES (@estados) 
    END"; 

Wenn es erfolgreich eingeführt es bedeutet, es war nicht bereits in der Tabelle vorhanden.

+0

Gibt es eine Möglichkeit, das in C# -Code zu konvertieren? –

+0

@Josue Figueiredo Sie müssen eine Tabelle zur Identifizierung abfragen, ob Ihr Datensatz mit dem gleichen Namen existiert oder nicht. –

1

Ich würde empfehlen, eine eindeutige Einschränkung verwenden:

CREATE UNIQUE CONSTRAINT unq_testetiposdestados_estados 
    UNIQUE (CDU_ESTADOS); 

INSERT INTO testetiposdestados(CDU_ESTADOS) 
    VALUES(@estados); 

Dies hat den Vorteil, dass die Datenbank stellt sicher, dass der Wert eindeutig zuzuordnen ist, nicht die Anwendung. Somit wird verhindert, dass eine andere INSERT oder UPDATE Anweisung einen eindeutigen Wert erzeugt.

Darüber hinaus ist dies viel sicherer als die IF Ansatz. Dieser Ansatz unterliegt Race Conditions - zwei Threads, die versuchen, den gleichen Wert einzufügen, können beide erfolgreich sein.

Verwandte Themen