c#SQL无法读取0000-00-00 00:00:00时间戳

时间:2015-01-06 07:26:11

标签: c# mysql sockets tcp mariadb

我的发展环境是下一个:
windows 2012
ms vc 2010(c#)
WIndows Form + Console
使用DB工具是HeidiSQL
开发程序是异步TCP套接字服务器(游戏服务器)
DB是MariaDB

CreateCode是Next:

CREATE TABLE `use_users` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `email` TEXT NOT NULL,
    `name` TEXT NOT NULL,
    `passwd` TEXT NOT NULL,
    `role` TEXT NOT NULL,
    `iconpath` TEXT NOT NULL,
    `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `enabled` TINYINT(4) NOT NULL DEFAULT '0',
    `lastlogin` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
    `logged` TINYINT(4) NOT NULL DEFAULT '0',
    `uploaddate` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
    PRIMARY KEY (`id`)
)
COMMENT='USER DATABASE'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=103
;

并查询 select * from use_users; 在HeidiSQL客户端正常工作 (我的c ++测试tcp服务器与boost :: asio工作正常 - 使用mysql_fetch_row 也可以正常工作)

但只有c#服务器无法读取TIMESTAMP 0000-00-00 00:00:00
的行 我的查询代码是下一个

        void launchQueryWithPooled(string query)
        {
            _succeeded = true;
            using (MySqlConnection connection = new MySqlConnection(MyConnectionString))
            using (MySqlDataAdapter da = new MySqlDataAdapter(query, connection))
            {
                connection.Open();
                try
                {   
                    IAsyncResult asResult = da.FillAsync(Result);
                    while (!asResult.IsCompleted);
                    Util.Log("Query Finished");
                }
                catch (System.Exception ex)
                {
                    _succeeded = false;
                    Util.Log("ERROR : Query("+query+") : "+ ex.Message + "\n" + ex.StackTrace);
                }
                finally
                {
                    if (connection.State == System.Data.ConnectionState.Open)
                    {
                        connection.Close();
                    }
                }
            }
        }

当我查询从use_users中选择名称; 时,它可以正常工作 当我查询从use_users中选择lastlogin id = 0 时,它工作正常(id 0的lastlogin是当前时间值) 当我查询从use_users中选择lastlogin时id = 1 (id 1的lastlogin是00:00:00),它返回无结果 <登记/> 并且每个选择的查询结果包括TIMESTAMP 0000-00-00 00:00:00返回无结果(但它有一个vaild时间戳或其他有效结果,它更改为无结果

我尝试过MySqlCommand,但结果是一样的 我不知道它是怎么发生的,怎么能选择00:00:00正常 请有人帮助我!

0 个答案:

没有答案