sql错误 - 在sql语句结束时缺少(;)

时间:2011-10-28 21:21:05

标签: sql

我试图让这一点工作,但它一直说在SQL语句的末尾缺少一个(;)。基本上,此代码将获取图片的文件名并插入photodatabase列中的fileName,如果文件名已存在,则只需更新= 1.

INSERT INTO photoDB(fileNames) 
VALUES('" + Path.GetFileName(fileName) + "')
ON DUPLICATE KEY UPDATE fileNames = 1

3 个答案:

答案 0 :(得分:2)

错误是消息很清楚。在SQL字符串末尾需要一个分号(fileNames = 1;

答案 1 :(得分:2)

这是一个有助于防止SQL注入并修复半冒号问题的示例。

SqlConnection conn = new SqlConnection("ConnectionString");

SqlCommand command = new SqlCommand();
command.Connection = conn;
command.CommandText = "INSERT INTO photoDB (fileNames) VALUES(@fileName) ON DUPLICATE KEY UPDATE fileNames = 1;";
command.Parameters.Add(new SqlParameter("@filename", System.Data.SqlDbType.VarChar).Value = Path.GetFileName(fileName));
command.ExecuteNonQuery();

答案 2 :(得分:0)

第二个答案(现在OP修复了分号问题)。

  1. 这是MySQL吗?其他数据库不支持ON DUPLICATE KEY语法。

  2. 您的ON DUPLICATE KEY子句将TEXT列(fileNames)设置为INTEGER值(1)。尝试在整数值周围加上引号。