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