【问题标题】:How to read from mysql datetime field如何从 mysql 日期时间字段中读取
【发布时间】:2013-03-16 14:16:24
【问题描述】:

我正在尝试从具有 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;
}

【问题讨论】:

  • 为什么会有这么多反引号?当然,您只需要保留字的那些...
  • 反引号可以通过某些工具自动添加,或者只是默认输入。它们不会造成伤害。

标签: c# mysql .net


【解决方案1】:

使用

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

而不是

dataReader["sDate"] + ""

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

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

9.3. Reserved Words

2.2. Reserved Words in MySQL 5.1

【讨论】:

    【解决方案2】:

    问题在于您的SELECT 语句,您有单引号' 而不是sDate 周围的反引号,因此该字段的值实际上是"sDate"

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

    【讨论】:

      猜你喜欢
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      相关资源
      最近更新 更多