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 の do のようにする必要があります。

于 2013-03-16T14:19:52.307 に答える