我想为我的网站创建一个群组功能。在每个组中都应该有一个组图像,人们可以上传。所以我必须将路径保存到我的SQL-DB中。我的代码:
newFileName = Guid.NewGuid().ToString() + "_" + Path.GetFileName(photo.FileName);
imagePath = @"images\" + newFileName;
imageThumbPath = @"images\thumbs\" + newFileName;
var setPath = (@"~\" + imageThumbPath);
var intoGroupImg = ("UPDATE groups SET img= " + @setPath+ " WHERE id= "+@grID);
db.Execute(intoGroupImg);
我总是得到错误消息:令牌行号= 1,令牌行偏移= 26,错误令牌=图像。我不知道为什么。
答案 0 :(得分:0)
我有一个解决方案:
var intoGroupImg = ("UPDATE groups SET img = @0 WHERE id= " +@grID);
db.Execute(intoGroupImg, imageThumbPath);
答案 1 :(得分:0)
首先,请使用参数化查询。这是你的吸烟枪与SQL注射。即使您没有添加用户输入,也是一个很好的习惯。
无论如何,我不确定你的@
符号是什么,但我习惯使用C#.net和WebMatrix,但我认为是什么你也在使用。试试这个:
var newFileName = Guid.NewGuid().ToString() + "_" + Path.GetFileName(photo.FileName);
var imagePath = "images/" + newFileName;
var imageThumbPath = "images/thumbs/" + newFileName;
var setPath = "~/" + imageThumbPath;
var intoGroupImg = "UPDATE groups SET img = @0 WHERE id = @1";
db.Execute(intoGroupImg, setPath, grID);
这就是我想象它用参数化查询查看C#。
鉴于行偏移,我认为错误来自@setPath
,但我不确定。尝试转到WebMatrix中的数据库选项卡,并手动执行查询@setPath
的值。
另外,我注意到你在示例中的连接字符串中使用了“反斜杠”而不是“正斜杠”。这是故意的吗?是@
符号在做什么?让你不必用\\
来逃避每个反斜杠?无论哪种方式,正斜杠/
在它的位置应该没问题,不是吗?
无论如何,希望我帮助过,至少有一些。