Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不使用日期-C.Net时,“无法将MySQL日期/时间值转换为System.DateTime”_C#_Mysql - Fatal编程技术网

C# 不使用日期-C.Net时,“无法将MySQL日期/时间值转换为System.DateTime”

C# 不使用日期-C.Net时,“无法将MySQL日期/时间值转换为System.DateTime”,c#,mysql,C#,Mysql,我有一个疑问: SELECT * FROM records WHERE serial LIKE '%19-111117-11%'; 序列列是一个varchar字段。这里没有日期/时间。也许.Net或MySQL认为“19-11111 7-11”是一个约会 我得到这个错误: MySql.Data.Types.MySqlConversionException:“无法将MySql日期/时间值转换为System.DateTime” 奇怪的是,该查询在MySql查询浏览器中运行良好,但在我的C应用程序中运

我有一个疑问:

SELECT * FROM records WHERE serial LIKE '%19-111117-11%';
序列列是一个varchar字段。这里没有日期/时间。也许.Net或MySQL认为“19-11111 7-11”是一个约会

我得到这个错误:

MySql.Data.Types.MySqlConversionException:“无法将MySql日期/时间值转换为System.DateTime”

奇怪的是,该查询在MySql查询浏览器中运行良好,但在我的C应用程序中运行时会引发该异常

我试过:

SELECT * FROM records WHERE CAST(serial as char) LIKE '%19-111117-11%';
我把“19-11111 7-11”分成两部分,就像这样:

有点伪代码,因为我在之后尝试了更多的东西

string p1 = serial.substring(0, serial.length/2)
string p2 = serial.substring(serial.length)

string query = "SELECT * FROM records WHERE SUBSTRING(serial,0,LENGTH(serial)/2) = " + p1 + "' AND  SUBSTRING(serial,LENGTH(serial)/2,LENGTH(serial)/2) = '" + p2 + "';";
请帮忙!这真是一个烦人的问题。我不确定为什么会出现转换为日期/时间异常。我根本不使用日期

编辑:

而且,它不起作用。我不认为它与C代码有关,因为它只是一个查询,是一个MySQL异常,但下面是使用的代码:

string serial = "19-111117-11";
DataTable tracking_info = MySqlGetDataTable("SELECT * FROM records WHERE `serial` LIKE '%" + serial + "%';");
调用此函数:

public static DataTable MySqlGetDataTable(string query, string connString = "default")
{       
    var data = new DataTable();
    using (var conn = new MySqlConnection(connString == "default" ? Program.CidDataConnectionString : connString))
    {
        var adapter = new MySqlDataAdapter(query, conn);
        adapter.Fill(data);
    }

    return data;
}
编辑2:

使用序列号:19-11111 5-11,19-11111 6-11,19-11111 8-11所有工作…只是19-11111 7-11不工作。这似乎与:

19-11111 7-11 不起作用,但:

SELECT col1, col2, col3... FROM records WHERE `serial` LIKE '%19-111117-11%';
工作

不起作用,但:

SELECT col1, col2, col3... FROM records WHERE `serial` LIKE '%19-111117-11%';

有效。

在应用程序配置文件中设置“Zero Datetime=True”

<add name="CONNECTIONSTRINGNAME" connectionString="server's HOSTNAMEorIP(i.e Localhost or IP address);user id=USER_ID;Pwd=PASSWORD;persistsecurityinfo=True;database=DATABASENAME;Convert Zero Datetime=True" providerName="MySql.Data.MySqlClient"/>

在应用程序配置文件中设置“Zero Datetime=True”

<add name="CONNECTIONSTRINGNAME" connectionString="server's HOSTNAMEorIP(i.e Localhost or IP address);user id=USER_ID;Pwd=PASSWORD;persistsecurityinfo=True;database=DATABASENAME;Convert Zero Datetime=True" providerName="MySql.Data.MySqlClient"/>

听起来问题出在您的C代码中,发布后,我们可以看一看,Serial似乎是MySql中的一个关键字。试着用倒勾'serial'环绕该标识符。谢谢你的回答。我编辑了这篇文章。还是不工作对不起,异教徒猴子。你是对的。我不明白为什么select*不起作用,但更改它以获得一个特定的列来纠正这个问题。听起来这个问题在你的C代码中,发布它,我们可以看一看Serial似乎是MySql中的一个关键字。试着用倒勾'serial'环绕该标识符。谢谢你的回答。我编辑了这篇文章。还是不工作对不起,异教徒猴子。你是对的。我不明白为什么select*不起作用,但更改它以获得一个特定的列来纠正这个问题。