0

stackoverflow について質問したことはありませんが、すでにたくさんの回答が得られています。しかし、今回は、いくつかの詳細な調査の後、自分自身に尋ねなければなりません。

Sqlite で VB.Net を使用していますが、クエリをパラメータで実行しても値が返されません。これは、コンマが含まれているという事実と関係があると思いますが、実際SituationStringにはわかりません。

ここに私のコードがあります:

dim ChildCtx as Integer
dim SituationString as String

SituationString="968,970,978,979,980,981,995,1022,1099,1119"

With DataBase

    .SQL_CMD.Parameters.Clear()
    .SQL_CMD.CommandText = "SELECT SERVCTX_NO FROM SERVCTX WHERE SERVCTX_NO IN (@situationstring) AND MASTER = '1'"
    .SQL_CMD.Parameters.Add("@situationstring", SqlDbType.VarChar, 255).Value = SituationString
    ChildCtx = .SQL_CMD.ExecuteScalar
    .SQL_CMD.Parameters.Clear()

End with

接続が開いており、クエリ全体を 1 つの文字列に書き込むと、クエリは正常に機能します。

ありがとう、

4

1 に答える 1

0

定数データをSQLコマンドにマージし、パラメータを使用してデータを渡すという2つの技術を混合しています。

SituationStringは、期待する整数のリストだと思いますSERVCTX_NO

したがって、それをステートメントにマージする必要があります。

.SQL_CMD.CommandText = "SELECT SERVCTX_NO FROM SERVCTX WHERE SERVCTX_NO IN ("+SituationString+") AND MASTER = '1'"
ChildCtx = .SQL_CMD.ExecuteScalar

あなたが行ったように、パラメーターを使用すると、正確な内容SERVCTX_NOの文字列であることが期待されます968,970,978,979,980,981,995,1022,1099,1119!

于 2013-10-30T15:16:00.280 に答える