Hallo!

> ich versuche einen INSERT in eine SQL-DB einzuf�gen, wenn dieser Wert
> jeweils noch nicht vorhanden ist:
> 
> // 1.INSERT in ProductUnits 
> SqlConnection ConnUnits = new
> SqlConnection(ConfigurationSettings.AppSettings["ConnStrhc24"]);
> SqlCommand CommUnits = new SqlCommand("SELECT Name FROM ProductUnits
> WHERE Name = '" + lblArtMenge.Text + "'", ConnUnits);
>                       
> ConnUnits.Open();
> 
> SqlDataReader ReadUnits = CommUnits.ExecuteReader();
>                                       
> if(ReadUnits.Read())
>   {
>    //Dann egal
>    Response.Write("Is Null");
>   }
> else
>   {
>    //Dann den INSERT machen
>    Response.Write("Is Eins");
>   }
> 
> aber auch, wenn der String in der WHERE-Bedingung exakt 
> �bereinstimmt, 
> krieg ich immer nur "Is Eins" ausgegeben. Wo hab ich denn hier den
> Denkfehler?

Wenn der Wert keinesfalls doppelt vorkommen darf, solltest Du ihn in der
Datenbank auch als UNIQUE definieren und dann den INSERT ohne Pr�fung
ausf�hren und ggf. auf die Fehlermeldung reagieren.

Wenn der Wert aber auch doppelt vorkommen darf, aber Du pr�fen willst, ob er
ggf. schon vorhanden ist, dann solltest Du so etwas wie 

SELECT 'Datensatz bereits vorhanden!' WHERE EXISTS (SELECT Name FROM
ProductUnits WHERE Name = [EMAIL PROTECTED])

... Mit einem parametrisierten Command und mit .ExecuteScalar verwenden. Das
ist dann schneller.

Die sauberste L�sung ist in jedem Fall eine StoredProcedure, die den
INSERT-Befehl �ber Parameter ausf�hrt und zuvor eine SELECT-EXISTS-Abfrage
macht und Dir dann entweder die ID des neuen Datensatzes oder einen
Fehlercode zur�ckgibt.

Freundliche Gr��e
Joachim van de Bruck  

_______________________________________________
Asp.net mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/asp.net

Antwort per Email an