C# MySQL在C中的转换#

C# MySQL在C中的转换#,c#,mysql,casting,odbc,datareader,C#,Mysql,Casting,Odbc,Datareader,好的,我试图在一个逗号分隔的文件中打印出一个表的内容 using (OdbcCommand com = new OdbcCommand("SELECT * FROM pie_data WHERE Pie_ID = ?", con)) { com.Parameters.AddWithValue("", Request.Form["pie_id"]); com.ExecuteNonQuery(); using (OdbcDataReader reader = com.Exec

好的,我试图在一个逗号分隔的文件中打印出一个表的内容

using (OdbcCommand com = new OdbcCommand("SELECT * FROM pie_data WHERE Pie_ID = ?", con)) {
    com.Parameters.AddWithValue("", Request.Form["pie_id"]);
    com.ExecuteNonQuery();
    using (OdbcDataReader reader = com.ExecuteReader()) {
        string finalstring = "";
        while (reader.Read()) {
            finalstring = reader.GetString(9) + ",";
            for (int i = 0; i <= 8; i = i + 1) {
                finalstring = finalstring + reader.GetString(i) + ",";
            }
        }
    }
    Response.Write(finalstring);
    noredirect = 1;
}
我得到的错误是:

Exception Details: System.InvalidCastException: Unable to cast object of type 'System.Int64' to type 'System.String'.
在线:

finalstring = finalstring + reader.GetString(i) + ",";

您可能正在使用
GetString()
获取Int64。对于该特定值,应该使用
.GetInt64

在调用此方法之前,还应调用
IsDBNull
以查找空值


GetString
尝试将列值强制转换为字符串。这对非文字列不起作用,而且您的表中显然有这些列(
Pies
类型为
long
Pie\u Rent
类型为
DateTime
)等。您必须使用其他方法提取数据,例如:

  finalstring = finalstring + reader[i].ToString() + ",";
正如上面所说,转换是由ODBC驱动程序完成的,如果它们不受支持,GetString不会转换为string。因为您有非字符串列,所以您面临这个问题

使用,而不是GetString,然后使用ToString()转换为字符串:


正是我需要的。谢谢
  finalstring = finalstring + reader[i].ToString() + ",";
finalstring += reader.GetValue(i).ToString() + ",";