ich bin mal wieder am verzweifeln, seit heute morgen versuche ich eine Lösung für ein Problem zu finden, aber nichts funktioniert.
Folgende Situation: Ich habe ein C# Programm das eine XML-Datei ausließt, die Values innerhalb verschiedener Elemente in string-Variablen speichert und diese dann in eine (php) MySQL-Datenbank schreibt. Jetzt gibt es aber öfter leere Elemente in der XML die als "NULL" in der Datenbank stehen müssen, sonst gibt es im weiteren Prozess-ablauf (nicht mehr zum Programm gehörend) Probleme.
Ohne Veränderung: Wenn mein Programm ein Element einließt und dieses leer ist habe ich einen leeren string (""). Wenn ich diesen an die Datenbank übergeben (die wiederum einen integer für das Feld vorsieht) steht in dem Feld der Datenbank eine 0 (als Zahl).
Ich weiß weder was es macht, noch ob ich es richtig angewandt habe, ich habe das Fragezeichen noch nie gesehen und auch den Doppelpunkt nur bei der Vererbung von Klassen benutzt. Ich habe aber schon mit einem int? rumprobiert weil ich gelesen habe das es null-able ist - hat auch nicht geholfen wegen oben genanntem Problem der konvertierung.
Dann habe ich noch ewig mit den Konvertierungen rumgemacht und ausprobiert, aber jetzt bin ich auch mit den nerven am Ende.
Meine Mitarbeiter wollen das es funktioniert und ich sehe keine andere Möglichkeit mehr als den SQL-Befehl statt den Variablen anzupassen. Grund ist, dass wenn eine Variable beim Eintrag in die DB gar nicht angesprochen ist sie automatisch mit NULL drin steht. Bei 3 Variablen die nach null gefragt werden müssen sieht das so aus:
if(string.IsNullOrEmpty(secret1)&& string.IsNullOrEmpty(secret2)&& string.IsNullOrEmpty(secret3)){
command ="INSERT INTO test () VALUES ();";}if(!string.IsNullOrEmpty(secret1)&& string.IsNullOrEmpty(secret2)&& string.IsNullOrEmpty(secret3)){
command ="INSERT INTO test (secret1) VALUES ("+ secret1 +");";}
Das mit jeder erdenklichen Möglichkeit ergibt 8 if-Abfragen, ich lasse quasi immer die Variablen weg die null sind. Bedenkt das da noch viel mehr Variablen sind deswegen ist der obere SQL-Befehl nur hier so "leer".
Ich bitte euch mal wieder instandig mir auf die Sprünge zu helfen. Wie mache ich aus einem leeren String eine Variable die meiner Datenbank NULL übergibt?
Frage
Tician
Moinsen,
ich bin mal wieder am verzweifeln, seit heute morgen versuche ich eine Lösung für ein Problem zu finden, aber nichts funktioniert.
Folgende Situation: Ich habe ein C# Programm das eine XML-Datei ausließt, die Values innerhalb verschiedener Elemente in string-Variablen speichert und diese dann in eine (php) MySQL-Datenbank schreibt. Jetzt gibt es aber öfter leere Elemente in der XML die als "NULL" in der Datenbank stehen müssen, sonst gibt es im weiteren Prozess-ablauf (nicht mehr zum Programm gehörend) Probleme.
Ohne Veränderung: Wenn mein Programm ein Element einließt und dieses leer ist habe ich einen leeren string (""). Wenn ich diesen an die Datenbank übergeben (die wiederum einen integer für das Feld vorsieht) steht in dem Feld der Datenbank eine 0 (als Zahl).
Sieht so aus:
Das allein ist schon ein Problem, wenn der eingelesene String leer ist
Quasi so: <secret></secret>
kann ich nicht in einen int konvertieren: Convert.ToInt32("") -> Error
Der String für die Datenbank:
Das ist nur eine von vielen Variablen.
Was habe ich schon versucht?
1. Ich frage die string in einer if-abfrage ab ob sie leer sind und weise ihnen dann direkt null zu. War für mich das logischste.
Dann sieht mein SQL-command aber übersetzt (überwachung der Variablen) so aus:
Meine null-Variable verschwindet einfach und natürlich bekomme ich eine Exception geworfen.
2. Irgendwas im internet gefunden:
Ich weiß weder was es macht, noch ob ich es richtig angewandt habe, ich habe das Fragezeichen noch nie gesehen und auch den Doppelpunkt nur bei der Vererbung von Klassen benutzt. Ich habe aber schon mit einem int? rumprobiert weil ich gelesen habe das es null-able ist - hat auch nicht geholfen wegen oben genanntem Problem der konvertierung.
Dann habe ich noch ewig mit den Konvertierungen rumgemacht und ausprobiert, aber jetzt bin ich auch mit den nerven am Ende.
Meine Mitarbeiter wollen das es funktioniert und ich sehe keine andere Möglichkeit mehr als den SQL-Befehl statt den Variablen anzupassen. Grund ist, dass wenn eine Variable beim Eintrag in die DB gar nicht angesprochen ist sie automatisch mit NULL drin steht. Bei 3 Variablen die nach null gefragt werden müssen sieht das so aus:
Das mit jeder erdenklichen Möglichkeit ergibt 8 if-Abfragen, ich lasse quasi immer die Variablen weg die null sind. Bedenkt das da noch viel mehr Variablen sind deswegen ist der obere SQL-Befehl nur hier so "leer".
Ich bitte euch mal wieder instandig mir auf die Sprünge zu helfen. Wie mache ich aus einem leeren String eine Variable die meiner Datenbank NULL übergibt?
Grüße
Tician
Link zu diesem Kommentar
Auf anderen Seiten teilen
3 Antworten auf diese Frage
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.