0
Dim id as integer = 1
Dim command as sqlcommand
Dim reader as idatareader

command = db.GetSqlStringCommand("select id, image, caption from profile where id = @id and image IS NOT NULL Order By NEWID()")
db.AddInParameter(command, "@id", DbType.Int32, id)
reader = db.ExecuteReader(Command)

コードは私が前に見たことがないエラーを投げています...

SqlCommand.CommandTextプロパティ値が無効なマルチパート名"/port:4544 / path:" C:\ sitepath "/ vpath:" / sitepath ""であり、引用符の使用法が正しくないため、SqlCommand.DeriveParametersが失敗しました。

そのエラーを修正するにはどうすればよいですか。

4

3 に答える 3

0

このエラーは見たことがありませんが、おそらく次のリンクが役立ちます: http://entlib.codeplex.com/Thread/View.aspx?ThreadId=60513

「これは entlib のどのバージョンですか?4.1 には sql ステートメントを受け入れる ExecuteReader のオーバーロードはありません。文字列を受け入れるものがありますが、ストアド プロシージャ名である必要があります。おそらくこのオーバーロードを使用していますが、 SQL ステートメントを渡すと、別のエラーが発生します」

于 2010-07-20T08:19:53.730 に答える
0

投稿したコードよりも深いレベルでコードが失敗しているようです。DB へのパスを正しく定義していない場合、SQLServer Management Studio 内から同様のエラーを受け取りました。オブジェクト「db」をどのように設定していますか?

接続文字列は何ですか? (パスワードなし! :-))

エラーは明らかに、引用符の位置に関して不適切な形式の文字列に関連しています。entlib がこの文字列を作成している場所と、"C:\sitepath" などの部分が文字列リテラルとして追加されるのではなく、引用符でどのように表示されるかを知っていますか?

などの宣言がどこかにあるのかな

Dim sRootPath As String = """C:\sitepath"""

..これにより、構築された文字列に引用符が挿入されます。

于 2010-07-20T08:21:59.427 に答える
0

エラーについてはわかりませんが、NEWID() による順序が少し気になります。newid() を使用すると、SQLServer はデータセットの各行に対して newid() 関数を呼び出します。

于 2010-07-20T08:22:13.327 に答える