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() + ",";