2016-03-24 5 views
-2

Ich habe ein Webformular bereits mit SQL Server verbunden. Ich kann einfügen, aber ich weiß nicht, wie man die Validierung durchführt, um keine Daten einzufügen, wenn die Tabelle bereits die gleichen Informationen enthält.Wie validiere ich Daten eingefügt von asp.net zu SQL Server

Wie kann dieser Prozess durchgeführt werden?

using (SqlConnection con = new SqlConnection("Data Source=hans-pc;Initial Catalog=CntExp;Integrated Security=True")) 
{ 
    SqlCommand cmd = new SqlCommand("INSERT INTO PreExp1 (Expe, Usuario) values (@Expe, @Usuario)", con); 
    cmd.Parameters.AddWithValue("@Expe", TextBox1.Text); 
    cmd.Parameters.AddWithValue("@Usuario", TextBox2.Text); 
    //cmd.Parameters.AddWithValue("@Fecha", Datenow()); 

    con.Open(); 

    int insertar = cmd.ExecuteNonQuery(); 

    Response.Write("Inserted" + insertar.ToString()); 
} 
+0

Versuchen Sie Einfügen, Hit eindeutigen Index, Griff Fehler. Außerdem sollten Sie Ihre Verbindung explizit schließen, nachdem Sie damit fertig sind. –

+0

Willkommen bei StackOverflow! Ihre Frage ist ein wenig breit, da es viele verschiedene Möglichkeiten gibt, dies zu erreichen. Sie können überprüfen, ob die Daten vorhanden sind, indem Sie die Datenbank aus Ihrem Code abfragen (innerhalb einer Transaktion) oder Trigger in der Datenbank verwenden. SO hilft Ihnen eher bei bestimmten Codierungsproblemen. Sie sollten also genauer angeben, was "die gleiche Information" bedeutet. Die Semantik kann dabei helfen zu entscheiden, ob Sie in Ihrem Code oder auf Db-Ebene validieren möchten. –

+0

@OmarLopez Wenn Sie Ihre Tabelle mit der korrekten referenziellen Integrität richtig erstellen, sollte Ihre Einfügung eine Ausnahme auslösen, die Sie entsprechend fangen und behandeln können. –

Antwort

0

Sie verwenden Eingabeparameter. Zeilen wie folgt:

cmd.Parameters.AddWithValue("@Expe", TextBox1.Text); 

Sie gelten als Eingabeparameter. Eine Möglichkeit zur Validierung Ihrer Daten wäre die Verwendung eines Ausgabeparameters. Etwas wie:

SqlParameter outParam = cmd.Parameters.Add("@MyParam", sqlDbType.Uniqueidentifier); 
outParam.Direction = ParameterDirection.Output; 

geben, die auf eine gespeicherte Prozedur, ob ein Datensatz bestimmt vorhanden ist, und übergibt die Boolean „True“ oder „False“ zurück zu Ihrem C# -Code. Dann können Sie den Wert von outParam überprüfen und bestimmen, ob Sie den Code weiter verarbeiten möchten.

0

Abgesehen von den korrekten Integritätsprüfungen in der Datenbank können Sie eine WHERE NOT EXISTS-Unterabfrage anwenden.

INSERT INTO PreExp1 (Expe, Usuario) 
VALUES (@Expe, @Usuario) 
WHERE NOT EXISTS (SELECT * FROM PreExp1 
        WHERE Expe = @Expe 
        AND Usuario = @Usuario) 
Verwandte Themen