C# console 2dim array

die normalen SQL INSERT und UPDATE befehle und das ganze mit ExecuteNonQuery oder so ausführen.

P.S.: Beim nächsten mal die Fehler mit posten damit wir wissen was genau nicht funktioniert ;)

Edit: Sorry hab die 2te Seite nicht gesehen ^^

Edit2: Bei der delete anweisung das * weg, delete löscht ja den kompletten datensatz, da brauchste keine spalten angeben
 
Zuletzt bearbeitet:
es kommt ja kein richtiger fehler. sondern das programm stürzt an diesem zeitpunkt ab. auch wenn ich das * weg mache. also so funktioniert das leider nicht.

EDIT: ich kann weder einfügen noch ändern noch löschen
 
Zuletzt bearbeitet:
jetzt kommt kein fehler mehr:
Code:
static public void write_database()
        {
            string conStr = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|" + "\\Database.mdf;Integrated Security=True;User Instance=True";

            conn = new SqlConnection(conStr);
            cmd = new SqlCommand();
            cmd.Connection = conn;

            conn.Open();
            
           // cmd.CommandText = "UPDATE  Adressen SET name = 'test' WHERE name = 'google.de'";
            cmd.CommandText = "delete from Adressen WHERE adr_id='4'";
          
            cmd.ExecuteNonQuery();
            
            conn.Close();
        }

es passiert aber auch nichts. weder beim update noch beim löschen. es passiert nichts.
 
Welechen Typ hat denn die Spalte adr_id?
Dem Wert nach zu urteilen sollte es ein Integer sein. Du gibst den Wert jedoch als String (char, varchar, nchar, nvarchar, ...) an! Zahlen werden jedoch ohne Hochkommata angegeben.
Probier doch deine Querys vorher im Management Studio aus!

Bzgl. "Das Programm stützt einfach ab."
Lass deine Anwendung im Debugger laufen und schau dir genau an, was passiert. Außerdem hast du so auch die Möglichkeit dir die Exception anzuschauen.

Außerdem:
Bzgl. Exceptions: Schau dir mal Try Catch an!

Bzgl. SqlConnection/SqlCommand
Bei Klassen implementieren IDisposable. Klassen die diese Interface implementieren stellen ein Methode Dispose zur Verfügung. Dies MUSS nach Verwendung des Objekts entwerden explizit oder implizit über eine using-Anweisung aufgerufen werden
 
also immom macht er ja garkeine fehlermeldung. aber er ändert auch nichts in der datenbank:

zu meiner datenbank:
der name der tabelle ist Adressen

habe insgesamt 6 spalten:

adr_id ->int -> ID
name ->varchar
adresse->varchar
check ->bit
mail->bit
latenz->int

was ich immom glaube ist das der command:
Code:
 cmd.CommandText = "UPDATE * from Adressen SET name = 'test' WHERE name = 'google.de'";

falsch ist, aber eigentlich müsste das doch richtig sein. wenn ich es so mache :
Code:
 cmd.CommandText = "SELECT * from Adressen  WHERE name = 'google.de'";

dann wird mir auch nur dieser eintrag angezeigt. also wahrscheinlich ist der sql command oben ein wenig falsch.
 
Hi

Ich hab doch gesagt, probier deine Querys doch vorher mal im Management Studio aus, dass du ausschließen kannst, das da der Fehler liegt.
Wenn du das gemacht hättest, hättest du schon die Info, dass die Syntax deines Update-Statements falsch ist
Hilfe Update Table siehe hier
 
es funktioniert jetzt...also er ändert den wert nun in der datenbank ab:
Code:
 static public void write_database()
        {
            string conStr = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|" + "\\Database.mdf;Integrated Security=True;User Instance=True";

            conn = new SqlConnection(conStr);
            cmd = new SqlCommand();
            cmd.Connection = conn;

            conn.Open();
            
            cmd.CommandText = "UPDATE Adressen SET Adressen.name = 'test' WHERE (name = 'google.de')";

          
            cmd.ExecuteNonQuery();
            
            conn.Close();
        }

aber beim erneuten aufrufen ist wieder der alte wert drin. gibt es noch sowas wie eine save funktion?^^
 
es funktioniert jetzt...also er ändert den wert nun in der datenbank ab:
Wie stellst du denn das fest, wenn du sagst, dass nach erneutem Abfragen der alte Wert in der Zelle steht?

Und nochmal der Hinweis auf IDisposable! Vor allem, da du bei jedem Methodenaufruf die Objekte für Command und Connection neu anlegst
 
ja ich gucke mir den wert am anfang an. dann änder ich es. dann schau ich mir den wert wieder an. als am anfang steht da z.b. google drinne dann änder ich in auf test und dann steht auch test drin. wenn ich das programm dann wieder starte dann steht da wieder google.

IDisposable das sagt mir jetzt nicht so viel, werde es mir jetzt gleich aber mal angucken danke ;)
 

Neue Beiträge

Zurück