Laden...

MySQL Parameters

Erstellt von .unreal vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.713 Views
.unreal Themenstarter:in
563 Beiträge seit 2004
vor 18 Jahren
MySQL Parameters

Hallo Community

Kann mir wer verraten, warum bei folgendem Code der parameter IMMER null ist?


MySqlCommand cmd = new MySqlCommand("INSERT INTO test (value) VALUES (@value)", myCon);
cmd.Parameters.Add("@value", MySqlDbType.VarChar).Value = "gugus";
cmd.ExecuteNonQuery();

Es wird wohl wieder ein richtig peinlicher Fehler sein g. Ich mache es genau gleich bei einem SELECT Statement, und dort funktionierts wunderbar.

Die Tabelle sieht so aus:

CREATE TABLE test (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
value VARCHAR( 50 ) NULL DEFAULT '<null>'
) TYPE = MYISAM ;

Gruss,
.unreal

D
155 Beiträge seit 2005
vor 18 Jahren

Ich denke, dass du auf einen gerade erstellten Parameter nicht zugreifen kannst.

Mach es doch so:

MySqlParameter p = new MySqlParameter("@value", MySqlDbType.VarChar);
p.Value = "gugus";
cmd.Parameters.Add(p);

.unreal Themenstarter:in
563 Beiträge seit 2004
vor 18 Jahren

Hi Druid

MySqlCommand cmd = new MySqlCommand("INSERT INTO test (value) VALUES (@value)", myCon);
MySqlParameter p = new MySqlParameter("@value", MySqlDbType.VarChar);
p.Value = "gugus";
cmd.Parameters.Add(p);
cmd.ExecuteNonQuery();

geht auch nicht.

ich kapier das nicht, das ist genau so wie es auch in der doku steht :S. Die Verbindung steht zu 100%! Ohne MySQL Parameter funktionieren die Querys. Überseh ich da etwas?

Gruss,
.unreal

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo .unreal,

ich bin mir NIE sicher, welche Parameterzeichen für welche DB funktionieren.

Probier mal anstatt das '@' zu nehmen ein '?' zu nehmen. Sollte das auch nicht funktionieren, dann vergiss meinen Beitrag 😉

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

.unreal Themenstarter:in
563 Beiträge seit 2004
vor 18 Jahren

das "?" kommt bei den ODBC-Driveres 🙂

trotzdem danke 😉

U
228 Beiträge seit 2004
vor 18 Jahren

Bei mir hat das auch nie funktioniert. Ich denke mal, das ist vielleicht ein Bug? Ich mach das immer so, daß ich das gesamte DataSet update (mit DataAdapter.Update()). Und das reicht für meine Anwendung.

Gruß Oliver

.unreal Themenstarter:in
563 Beiträge seit 2004
vor 18 Jahren

Hi Unikum

Da bin ich doch mal froh, dass ich nicht der einzige bin, bei dem diese Parameter nicht funktionieren 🙂 Was für eine Version von MySQL verwendest du? Ich verwende gerade Version 5.0.18.

Wenn das wirklich ein Bug ist, ist das doch sehr lazy von den Entwicklern... Die Dokumentation ist leider auch sehr spärlich, welche sie mitliefern 🙁 Die Beispielapplikation verwendet auch "nur" den MyqlCommandBuilder. Erstaunlich ist, dass andere über diese Klassen schreiben, dass der CommandBuilder bei Joins nicht funktioniert, also soll man die Statements von hand machen. Nur ist das ohne Parameter relativ doof 😠

Gruss,
.unreal

59 Beiträge seit 2005
vor 18 Jahren

Hallo .unreal

Die folgenden Zeilen, habe ich aus der "testsuite" (ParameterTests.cs) des MySQL-Connectors V.1.0.5.


cmd.CommandText = "INSERT INTO Test VALUES (1, 'test', ?dt, ?time, NULL)";
cmd.Parameters.Add( new MySqlParameter("?time", time));
cmd.Parameters.Add( new MySqlParameter("?dt", dt));

Mangels verfügbaren MySQL Server konnte ich die Sache nicht testen, aber vielleicht hilft es ja.

2b | !2b = 0xff

.unreal Themenstarter:in
563 Beiträge seit 2004
vor 18 Jahren

Hi HoGi

Super, danke HoGi, so funktionierts!

@norman_timo:
sooooooooooory, du hattest recht g und ich wollte nicht mal hinhören 😠

Gruss,
.unreal

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo .unreal,

da gibts wohl Schlimmeres, freut mich aber das es funktioniert 😁

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”