folgender Quelltext:
using System;
using System.Data;
using MySql.Data.MySqlClient;
namespace MySQL_Test
{
static class Program
{
///
/// Main function
///
static void Main()
{
String strConnectionString =
"Data Source=localhost;Database=depon;User ID=root;Password=XXX";
MySqlConnection oConnection = new MySqlConnection(strConnectionString);
oConnection.Open();
MySqlCommand oCommand = oConnection.CreateCommand();
oCommand.CommandText = "INSERT INTO games(title) VALUES (@title)";
oCommand.Parameters.Add("title", MySqlDbType.String);
oCommand.Parameters["title"].Value = "TEXT";
oCommand.ExecuteNonQuery();
}
}
}
Eigentlich erwarte ich, dass eine Zeile mit dem Inhalt 'TEXT' eingefügt wird, stattdessen erhalte ich
+--------+-------+
| gameid | title |
+--------+-------+
| 2 | NULL |
+--------+-------+
Unter OLEdb funktioniert die Sache einwandfrei, unter dem MySQL-Connector erhalte ich nur NULL Einträge. Ersetze ich @title durch ein ?, so erhalte ich folgende Exception: 'Parameter '?' must be defined'.
Ich nutze den MySQL Connector Net 1.0.4 direkt von www.mysql.com, als Server MySQL 4.1. Weiterhin tritt dieser Fehler sowohl unter .Net 1.1, als auch .Net 2.0 auf.
MySqlCommand oCommand = oConnection.CreateCommand();
oCommand.CommandText = "INSERT INTO games(title) VALUES (?title)";
oCommand.Parameters.Add("?title", MySqlDbType.String);
oCommand.Parameters["?title"].Value = "TEXT";
oCommand.ExecuteNonQuery();
Damit läuft die Sache einwandfrei. Sollte nicht eigentlich das '@'-Zeichen als Kennzeichnung genommen werde oder habe ich bei ADO.Net falsch verstanden?
Vielen Dank für eine Hilfestellung,