Insert null in DB

03/04/2008 - 00:26 von H. Rettich | Report spam
Liebe NG

Mit VS2008 gibt es Nullable Type. So sollte es gemàss Theorie möglich sein,
null-Werte in die DB einzufügen. Wie folgendes Test-Beispiel zeigt, geht das
mit

cmd1.Parameters.AddWithValue("@test", test); // long --> DB: bigint

nicht.

-

con1 = new SqlConnection();
cmd1 = new SqlCommand();


inh = "hallo";
long? test = null; // Nullable Type: long?

con1.ConnectionString = Properties.Settings.Default.conString;

cmd1.Parameters.Clear();
cmd1.Parameters.AddWithValue("@inhalt", inh); // string --> DB: varchar
cmd1.Parameters.AddWithValue("@test", test); // long --> DB: bigint


string c1 = "INSERT INTO [Test] ([inhalt], [test]) VALUES (@inhalt,
@test);";

cmd1.CommandText = c1;
cmd1.Connection = con1;

try
{
con1.Open();
string sanz = cmd1.ExecuteScalar().ToString();

}
catch (Exception ex)
{
MessageBox.Show("Kein Insert: " + ex.Message);
// ... erwartet den Parameter @test, der nicht übergeben wurde.
}

Grüsse Hansueli Rettich
 

Lesen sie die antworten

#1 Henning Eiben
03/04/2008 - 09:19 | Warnen spam
H. Rettich wrote:

Mit VS2008 gibt es Nullable Type. So sollte es gemàss Theorie möglich sein,
null-Werte in die DB einzufügen. Wie folgendes Test-Beispiel zeigt, geht das
mit

cmd1.Parameters.AddWithValue("@test", test); // long --> DB: bigint

nicht.



Also IMHO ist null und DBNull ja nicht automatisch das gleiche. Also nur
weil ein einen Datentyp als nullable deklariert hast, bedeutet das
nicht, dass damit auch automatisch ein DBNull an die Datenbank gesendet
wird. Ggf. muss du also 'test' auf null prüfen und dann dem
Command-Parameter ein DBNull mitgeben.



Henning Eiben

busitec GmbH
Consultant

e-mail:


+49 (251) 13335-0 Tel
+49 (251) 13335-35 Fax

Rudolf-Diesel-Straße 59
48157 Münster
www.busitec.de

Sitz der Gesellschaft: Münster
HR B 55 75 - Amtsgericht Münster
USt-IdNr. DE 204607833 - St.Nr. 336/5704/1277
Geschàftsführer: Simon Böwer, Henning Eiben, Stefan Kühn, Martin Saalmann



... Gentlemen: Start your debuggers...

Ähnliche fragen