将Image-Path保存到SQL,Webmatrix中

时间:2013-06-04 17:17:12

标签: sql string image webmatrix

我想为我的网站创建一个群组功能。在每个组中都应该有一个组图像,人们可以上传。所以我必须将路径保存到我的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,错误令牌=图像。我不知道为什么。

2 个答案:

答案 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的值。

另外,我注意到你在示例中的连接字符串中使用了“反斜杠”而不是“正斜杠”。这是故意的吗?是@符号在做什么?让你不必用\\来逃避每个反斜杠?无论哪种方式,正斜杠/在它的位置应该没问题,不是吗?

无论如何,希望我帮助过,至少有一些。