我的发展环境是下一个:
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正常 请有人帮助我!