Dbnull.value als NULL in SQL-Server speichern

VB 2010
Ein SQLCommand enthält den Command.text If(IsDBNull(... ein Datentyp integer .. )), DBNull.Value, ... ein Datentyp integer...)
Fehlermeldung des Debuggers:
Ein gemeinsamer Typ kann nicht abgeleitet werden, und Option Strict On lässt die Annahme des Object-Typs nicht zu.
Gibt es da eine Möglichkeit (ich möchte ungern den Wert 0 im SQL-Server speichern, sondern NULL verwenden) ?

Danke und Grüße von PCFJKG

Content-Key: 1385439164

Url: https://administrator.de/contentid/1385439164

Ausgedruckt am: 26.10.2021 um 16:10 Uhr

Mitglied: schleeke
schleeke 13.10.2021 um 17:59:02 Uhr
Goto Top
Sicher dass das der (verstümmelte) Inhalt vom SqlCommand.CommandText ist? Dort sollten nur SQL-Statements stehen...

Falls Du einen SqlParameter für den Wert verwendest: dort kannst Du als Wert NULL übergeben, um DbNull in das Feld zu schreiben (sofern das Feld nullable ist).
Mitglied: PCFJKG
PCFJKG 13.10.2021 um 18:28:14 Uhr
Goto Top
Hallo schleeke,
danke für die schnelle Antwort. Hier der Text etwas ausführlicher:
cmd.CommandText = "INSERT [...].[dbo].[...] ([ ], [ ], [ ]) VALUES (" & If(IsDBNull( ...Rows(0).Item("... ")), DBNull.Value, CInt(.Rows(0).Item(" ... "))) &" hier wird der String dann fortgesetzt.
Die Tabellenspalten hinter INSERT lassen NULL zu und sollen auch NULL haben, wenn ...Rows(0).Item("... ") dbnull ist.
Cmd ist der SqlCommand und soll mit cmd.ExecuteNonQuery() ausgeführt werden...
Mitglied: manuel-r
manuel-r 13.10.2021 um 18:58:25 Uhr
Goto Top
Hallo
Das scheint ja nur ein Teil dessen zu sein womit das SQL-Statement zusammengebaut wird. Meist hat man da einfach mal irgendwo eine Klammer oder ein Anführungszeichen vergessen.
Kannst du das SQL-Statement so wie es erzeugt wird einfach als String ausgeben? Dann sieht man den Fehler meistens ganz schnell.

Manuel
Mitglied: SlainteMhath
SlainteMhath 14.10.2021 um 07:49:01 Uhr
Goto Top
Moin,

du baust ja einen String zusammen. Du musst also, falls isDBNull(row(0).item) == True, den STRING "NULL" in den CommandText schreiben, und nicht (den Wert von) DBNull.Value

Oder du verwendest Prepared Statements -> https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcom ...

lg,
Slainte
Mitglied: PCFJKG
PCFJKG 14.10.2021 um 14:53:11 Uhr
Goto Top
Hallo manuel-r und SlainteMhath,
mit Prepared Statements funktioniert die Sache natürlich, man könnte auch Variable verwenden, welche je nach IF-Statement Null oder einen Wert besitzen (übriges wird "NULL" nicht funktionieren, weil "NULL" als String interpretiert wird und die zweite Variable einen integer-Wert darstellt, - damit auch kein gemeinsamer Typ). Ich wollte halt nur das (m.E. übersichtlich-einfache) IF-Statement mit 3 Argumenten benutzen. Nun sieht es wohl so aus, dass es so nichts wird. Wie auch immer, danke für Eure Mühe und eine schöne Zeit.
PCFJKG
Heiß diskutierte Beiträge
question
Suche guten Virenscanner für Windows Server 2019 bzw Exchange 2019Nummer-5Vor 1 TagFrageExchange Server16 Kommentare

Hallo, ich habe leider das Problem, das von unserem Exchange Server 2019 Spam Mails versendet werden. Ich habe jetzt den Relais-Server erst einmal stillgelegt, es ...

question
Mail-Relay für interne AnwendungenredhorseVor 1 TagFrageExchange Server12 Kommentare

Hallo, wir verwenden einen Exchange 2016 mit einer Sophos UTM als Smarthost. Der Exchange wird u.a. als SMTP-Relay von internen Anwendungen benutzt, für den anonymen ...

question
Firewall Hardware (VM)v4rrimka-sanVor 1 TagFrageNetzwerkmanagement10 Kommentare

Hey, Ich habe eine Frage, die wahrscheinlich schon öfter gestellt wurde, zum Thema Hardware Anforderung für eine Firewall in einer VM. Zur Auswahl stehen OPNsense ...

question
Teamviewer stürzt ab unter Win 11ben1300Vor 1 TagFrageWindows 118 Kommentare

Hallo zusammen, habe mein Notebook auf Windows 11 umgestellt. Seitdem kann ich den Teamviewer (aktuellste Version) nicht mehr nutzen. Programm startet, aber sobald ich z.B. ...

question
Intune Geräte DESKTOP vs. LAPTOPmarkaurelVor 1 TagFrageMicrosoft2 Kommentare

Hallo zusammen und bitte um eure Hilfe! Ich hab zwei Geräte: 1x Dell Inspiron 5301 1x Lenovo 20VD Beide Geräte eindeutig Kategorie Laptop/Notebook. Wenn ich ...

question
Linux End-to-Site VPN mit Sophos SGukulele-7Vor 1 TagFrageLinux Netzwerk12 Kommentare

Hallo und Hilfe. Ich habe eine Sophos SG, die unterstützt laut Menü "Remote Access" SSL PPTP L2TP over IPsec IPsec Cisco™ VPN Client Dabei ist ...

question
Datenreplikation unabhängige Domänensupport-itVor 1 TagFrageWindows Server8 Kommentare

Hallo zusammen, kann mir jemand ein Programm empfehlen, das sich so ähnlich verhält wie die DFS-Replikation von Windows, blos zwischen verschiedenen Domänen? Ich habe die ...

question
Netzwerktool mit IP-SettingsServer2503Vor 1 TagFrageNetzwerkmanagement4 Kommentare

Hallo zusammen, ich meine aus meiner Schulzeit zu wissen, dass es ein Tool gibt, mit dem ich ein Netzwerkplan (Clients, Switches, Router etc.) samt IP-Einstellungen ...