0

我正在尝试从具有 datetime 类型的 mysql 字段中读取数据,并且我正在尝试一切,并且始终只返回字段名称。

这是我的代码:

using (MySqlConnection connection = new MySqlConnection(ConnectionString))
{
    connection.Open();

    string query = @"SELECT `sID`, 'sDate', `sGameLogin`, `dGameAmount`, 
                    'sPayMethod' FROM `XeronRequests` WHERE `iStatus` = 0";

    MySqlCommand cmd = new MySqlCommand(query, connection);
    cmd.CommandType = CommandType.Text;

    using (MySqlDataReader dataReader = cmd.ExecuteReader())
    {                    
        while (dataReader.Read())
        {
            list.Add(new PaymentInfoText(dataReader["sID"] + "", 
                     dataReader["sDate"] + "", 
                     dataReader["sGameLogin"] + "", 
                     dataReader["dGameAmount"] + "", 
                     dataReader["sPayMethod"] + ""));
        }
    }

    e.Result = list;
}
4

2 回答 2

3

利用

dataReader.GetDateTime(dataReader.GetOrdinal("sDate"))

代替

dataReader["sDate"] + ""

并删除 sql 中列周围的刻度,例如

sDate而不是'sDate'. 只有保留字或列名中有空格时才需要它们:

9.3. 保留字

2.2. MySQL 5.1 中的保留字

于 2013-03-16T14:21:15.580 回答
0

问题是您的SELECT陈述,您有单引号'而不是反引号sDate,因此该字段的值实际上是"sDate".

或者正如 Jon Skeet 所说,完全摆脱反引号,因为它们只存在于关键字中,必须像[]MSSQL 那样。

于 2013-03-16T14:19:52.307 回答