0

Web サイトにグループ機能を作成したいと考えています。すべてのグループには、人々がアップロードできるグループ画像が必要です。そのため、パスを 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 インジェクションに対する決め手です。ユーザー入力を追加していない場合でも、習慣にするのは良い習慣です。

とにかく、あなたの@シンボルのいくつかが何のためにそこにあるのかわかりませんが、私は WebMatrix で C#.net を使用することに慣れていますが、それもあなたが使用しているものだと思います。これを試して:

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 に答える