-1
我的软件生成一个查询,插入我的Access数据库,而是来自我的代码查询,生成System.Data.OleDb.OleDbException
,与附加信息:.OleDbException语法错误INSERT INTO语句中
语法错误在INSERT INTO语句中。
调试代码,生成的查询工作正常,如果我尝试通过Access软件insert
。
我真的不知道为什么我得到这个异常,我的查询很好!
代码:
OleDbConnection commodityDB = null;
try
{
commodityDB = new OleDbConnection(connector);
Console.WriteLine("Microsoft DB Connected!");
}
catch (Exception ex)
{
Console.WriteLine("Error: Failed to create a database connection. \n{0}", ex.Message);
return;
}
OleDbCommand cmder = new OleDbCommand(insert_txt,commodityDB);
string insert = string.Format("INSERT INTO Comm2 (Commodity_Name, Month_Code, Year_Com, ComCode, TradeDate,Open,High,Low,Close,Vol,OI) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')", comName, comMonth, comYear, parts[0], parts[2], parts[3], parts[4], parts[5], parts[6], parts[7], parts[8]);
commodityDB.Open();
cmder.CommandText = insert;
cmder.ExecuteNonQuery();
myAccessConn.Close();
生成的查询的一个例子:
INSERT INTO Comm2 (Commodity_Name, Month_Code, Year_Com, ComCode, TradeDate, Open, High, Low, Close, Vol, OI)
VALUES ('Australian Dollar', 'Y', '0', 'A6', '04/28/2014', '92740', '93157', '92435', '92568', '0', '0')
它工作正常!不是在软件上。
工作!事实上,使用不同的变量初始化OleDbCommand是我的错误。关于SQL Injection,我知道风险,但是这个软件将在一个安全的地方在本地工作。 –
非常好。这不仅仅是关于SQL注入。如果在某一点上,你正在读取一个包含引用字符的有效Commodity_Name(例如,澳大利亚人的Dollar:不好的例子,但你知道这是一个真正的可能性而不是恶意攻击)呢?这将打破你的字符串格式,然后SQL命令。参与使用参数只是一个好习惯,然后你会基本上做到这一点,因为你习惯了。 –