M
Mikael Thorsson
Hello! Here are two pieces of C# that connect to MySQL. The first one
works, the second one raises an exception on the Fill call. The Open
succeeds in both cases.
What am I doing wrong?
************* Works:
string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
"SERVER=localhost;" +
"DATABASE=****" +
"UID=root;" +
"PASSWORD=****;" +
"OPTION=3";
OdbcConnection conn = new OdbcConnection(MyConString);
conn.Open();
OdbcDataReader myDataReader;
OdbcCommand myCommand = new OdbcCommand("SELECT * FROM User", conn);
myDataReader = myCommand.ExecuteReader();
while (myDataReader.Read())
{
Console.WriteLine("Data: " + myDataReader.GetString(0) + " " +
myDataReader.GetString(1));
}
conn.Close();
************* Fails:
string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
"SERVER=localhost;" +
"DATABASE=*****;" +
"UID=root;" +
"PASSWORD=****;" +
"OPTION=3";
OdbcConnection conn = new OdbcConnection(MyConString);
conn.Open();
OdbcDataAdapter a = new OdbcDataAdapter("SELECT * FROM User", conn);
DataSet d = new DataSet();
a.Fill(d, "User"); // This raises the exception!
conn.Close();
************** The exception:
Unhandled Exception: System.InvalidCastException: Specified cast is
not valid.
at System.Data.Common.DbDataAdapter.get_SelectCommand()
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String
srcTable)
at csClient.DataGridSample.ConnectToData2() in ...
works, the second one raises an exception on the Fill call. The Open
succeeds in both cases.
What am I doing wrong?
************* Works:
string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
"SERVER=localhost;" +
"DATABASE=****" +
"UID=root;" +
"PASSWORD=****;" +
"OPTION=3";
OdbcConnection conn = new OdbcConnection(MyConString);
conn.Open();
OdbcDataReader myDataReader;
OdbcCommand myCommand = new OdbcCommand("SELECT * FROM User", conn);
myDataReader = myCommand.ExecuteReader();
while (myDataReader.Read())
{
Console.WriteLine("Data: " + myDataReader.GetString(0) + " " +
myDataReader.GetString(1));
}
conn.Close();
************* Fails:
string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" +
"SERVER=localhost;" +
"DATABASE=*****;" +
"UID=root;" +
"PASSWORD=****;" +
"OPTION=3";
OdbcConnection conn = new OdbcConnection(MyConString);
conn.Open();
OdbcDataAdapter a = new OdbcDataAdapter("SELECT * FROM User", conn);
DataSet d = new DataSet();
a.Fill(d, "User"); // This raises the exception!
conn.Close();
************** The exception:
Unhandled Exception: System.InvalidCastException: Specified cast is
not valid.
at System.Data.Common.DbDataAdapter.get_SelectCommand()
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String
srcTable)
at csClient.DataGridSample.ConnectToData2() in ...