【问题标题】:MySQL Casting in C#C# 中的 MySQL 铸造
【发布时间】:2012-06-07 16:38:55
【问题描述】:

好的,所以我正在尝试以逗号分隔的文件打印出表格的内容。

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;
}

我的表格布局是:

CREATE TABLE `rent_data` (
`Pies` INT(10) UNSIGNED NOT NULL,
`Name` VARCHAR(85) NOT NULL,
`Email` VARCHAR(85) NOT NULL,
`Pie_Rent` DATE NOT NULL,
`Rent_To` DATE NOT NULL,
`Returned_Date` DATE NULL DEFAULT NULL,
`Place` VARCHAR(100) NOT NULL,
`Purpose` MEDIUMTEXT NOT NULL,
`Comments` MEDIUMTEXT NULL,
`Pie_ID` SMALLINT(5) UNSIGNED ZEROFILL NOT NULL,
INDEX `Pie_ID` (`Equipment_ID`)
)

我得到的错误是:

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

上线:

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

【问题讨论】:

    标签: c# mysql casting odbc datareader


    【解决方案1】:

    正如here 所说,转换由 ODBC 驱动程序完成,如果不支持,GetString 不会转换为字符串。由于您有非字符串列,因此您面临这个问题。

    使用GetValue代替GetString,然后使用ToString()转换为字符串:

    finalstring += reader.GetValue(i).ToString() + ",";
    

    【讨论】:

    • 正是我需要的。谢谢!
    【解决方案2】:

    您可能正在使用GetString() 来获取 Int64。您应该使用 .GetInt64 代替该特定值

    您还应该在调用此方法之前调用IsDBNull 来查找空值。

    http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader_methods

    【讨论】:

      【解决方案3】:

      GetString 尝试将列值转换为字符串。这不适用于非文字列,并且您的表中显然有它们(Pies 的类型为longPie_RentDateTime)等。您必须使用其他方法来提取数据比如:

        finalstring = finalstring + reader[i].ToString() + ",";
      

      【讨论】:

        猜你喜欢
        • 2012-06-05
        • 2019-05-12
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        • 2019-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多