0

パラメータを quert に渡そうとしましたが、うまくいきません。それを行う最良の方法は何ですか?文字列を連結したくありません。これが私のクエリです:

string cmd = @"
SELECT
    *
FROM
    TABLE
WHERE 
    p.PromptTypeID = pt.ID 
    AND p.PromptDomainID = pd.ID 
    AND p.LanguageID = pl.ID 
    AND p.VoiceID = pv.ID 
    AND p.Active='Y'
    AND PromptText LIKE ?              
ORDER BY 
    p.ID DESC";

using (SqlCommand command = new SqlCommand())
            {
                command.CommandText = cmd;
                command.Transaction = transac;
                command.Connection = cnn;
                command.Parameters.Add("?", SqlDbType.VarChar, 50).Value = "%" + text + "%";
                using (SqlDataAdapter adp = new SqlDataAdapter(command))
                {
                    adp.Fill(dt);                        
                }
            }

LIKE 演算子で値を渡すことができませんでした。また、「?」の代わりに @text を使用してみました。しかし、うまくいきません。助言がありますか?

ちなみに、「?」の近くに不正な構文が表示されます SqlException

4

4 に答える 4

1

?をいくつかのSQL変数に置き換え、command.Parameters.Add以下のように変更します

PromptText LIKE %@Text%

cmd.Parameters.Add("@Text", varYourtext);
于 2014-04-02T07:09:35.313 に答える
0

試す

AND PromptText LIKE @text

command.Parameters.Add("@text"...
于 2014-04-02T07:09:21.177 に答える
0

私は最終的に解決策を見つけました。".... LIKE %@text%" を使用してパラメーターを渡すと、 '@text command.Parameters.Add(new SqlParameter("@text", text));' 例外の近くで不正な構文が発生します。

しかし..

「.... LIKE @text」を使用し、パラメーターを渡すcommand.Parameters.Add(new SqlParameter("@text", "%"+text+"%"));と機能します。

于 2014-04-02T07:53:09.423 に答える
-3

文字列連結を使用するだけです。

cmd = cmd.Replace("?","'%" + text + "%'");
于 2014-04-02T07:13:15.153 に答える