Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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#System.Data.OleDb;语法错误插入到_C#_Database_Ms Access - Fatal编程技术网

C#System.Data.OleDb;语法错误插入到

C#System.Data.OleDb;语法错误插入到,c#,database,ms-access,C#,Database,Ms Access,我正试图将数据从C#发送到MS Access的数据库。当我试图执行我的查询时,我得到一个错误 INSERT INTO语句中的语法错误 我的代码看起来像这样;奇怪的是,当我尝试在没有DateTime的情况下执行查询时,它可以工作: string queryString = "insert into Data(Temp,Hum,Time)Values('" + data[0] + "','" + data[1] + "','" + Date

我正试图将数据从C#发送到MS Access的数据库。当我试图执行我的查询时,我得到一个错误

INSERT INTO语句中的语法错误

我的代码看起来像这样;奇怪的是,当我尝试在没有
DateTime
的情况下执行查询时,它可以工作:

string queryString = "insert into Data(Temp,Hum,Time)Values('" + data[0] + "','" + data[1] + "','" + DateTime.Now + "')";

using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:/Users/Brecht/OneDrive/Bureaublad/test.accdb"))
{
    OleDbCommand command = new OleDbCommand(queryString, connection);
    connection.Open();

    OleDbDataReader reader = command.ExecuteReader();

    // always call Close when done reading.
    reader.Close();
}

如果你们中的一些人需要更多信息,请告诉我。:)

日期值需要格式正确的字符串表达式:

string queryString = "insert into Data (Temp,Hum,Time) Values ('" + data[0] + "','" + data[1] + "',#" + DateTime.Now.ToString("yyyy'/'MM'/'dd hh':'mm':'ss") + "#)";

除此之外,您不应该以这种方式组合SQL查询(google“SQL注入漏洞”),问题在于.NET格式化日期的方式与SQL server期望的方式不一致。您需要手动将日期格式化为有效的SQL日期值。|。还有:
Temp、Hum、Time
都是字符串吗?有什么价值观?特别是:这里使用字符串连接,使用的是
DateTime.Now.ToString()
。-因此,如果字段不是字符串,它可能会崩溃,对吗?根本不需要格式化
DateTime
——SQL Server和Access(以及大多数其他数据库)都会完美地处理NET
DateTime
对象。始终使用SQL参数。@OlivierRogier Temp和Hum是字符串。时间是一个日期/时间。temp和hum的值来自将数据插入Access的udp连接(工作正常)?尝试从DateTime中删除撇号分隔符。现在或替换为#分隔符。或者使用参数不要预兆坏代码,使其稍微不那么坏,这需要parameterization@Charlieface:直截了当的问题应该得到直截了当的回答。然后你可以带上你的替代方案——你没有。