0

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

4

2 回答 2

0

我有一个解决方案:

var intoGroupImg = ("UPDATE groups SET img = @0 WHERE id= " +@grID);
db.Execute(intoGroupImg, imageThumbPath);
于 2013-06-04T20:03:52.303 回答
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

另外,我注意到您在示例中的连接字符串中使用了“反斜杠”而不是“正斜杠”。这是故意的吗?那是@符号在做什么吗?让你不必逃避每个反斜杠\\?不管怎样,用正斜杠/代替它应该没问题,不是吗?

无论如何,希望我有所帮助,至少在一些方面。

于 2013-06-06T13:46:38.917 回答