我试图让这一点工作,但它一直说在SQL语句的末尾缺少一个(;)。基本上,此代码将获取图片的文件名并插入photodatabase
列中的fileName
,如果文件名已存在,则只需更新= 1.
INSERT INTO photoDB(fileNames)
VALUES('" + Path.GetFileName(fileName) + "')
ON DUPLICATE KEY UPDATE fileNames = 1
答案 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修复了分号问题)。
这是MySQL吗?其他数据库不支持ON DUPLICATE KEY语法。
您的ON DUPLICATE KEY子句将TEXT列(fileNames)设置为INTEGER值(1)。尝试在整数值周围加上引号。