- ベストアンサー
パラメータ
Cmd.commandtext="select * from stb where id =?" コマンドテキスト以外でパラメータを使用することが できますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> パラメータはCmd.CommandTextでしか > 使用できないのでしょうか? そういうことになります。 で、そもそもの質問文にある SQL文ですが、これはあまり意味がありません。 そこまで SQL文を動的に組み立てるのであればパラメータである "?" を使う意味がありません。 MySQL は使ったことがないのですが、 "SELECT * FROM stb WHERE id=?" という SQL文をあらかじめストアドプロシージャ(MySQL ではなんて呼ぶんでしょうかね)で DB 側に作っておいて、そいつに何らかの名前をつけておく。(例えば myQuerry01) それを Command オブジェクトで操作する際に Cmd.CommandText="myQuerry01" というように、CommandText プロパティにはストアドプロシージャの名前を入れてあげる。 #そもそも MySQL を前提に回答していないので、 #私が言ってる事がそのまんま MySQL で使えないかもしれません。
その他の回答 (1)
- temtecomai2
- ベストアンサー率61% (656/1071)
DB に何を使っているのかぐらい書きましょうよ。 Access の MDB ファイルを使っているのであれば、パラメータクエリを MDB の方で持っておくことができます。 結局は Command オブジェクトを使う事になりますが、Command オブジェクトの Parameters プロパティに Parameter オブジェクトを Append して使います。 手元に Access が無いので記憶だけで書きます。 #ADO を参照設定できない環境でしたら適宜コードを変更してください。 Dim Cmd As New ADODB.Command Cmd.CommandText = "パラメータクエリ名" Cmd.CommandType = adCmdStoredProc Cmd.ActiveConnection = objConn Dim param As ADODB.Parameter Set param = Cmd.CreateParameter("パラメータ名1", adInteger, adParamInput) param.Value = 検索する値 Cmd.Parameters.Append param Set param = Cmd.CreateParameter("パラメータ名2", adVarWChar, adParamInput) param.Value = 検索する値 Cmd.Parameters.Append param みたいな。 これなら名前付きパラメータが使えたかも。 CreateParameter の第2引数はパラメータの型ですので、適宜変更してください。 また、参照設定できない環境でしたら型の定数ではなく、お使いのドライバに合わせて数値化させてください。
補足
回答ありがとうございます。 MYSQLを使用しています。 パラメータはCmd.CommandTextでしか 使用できないのでしょうか?
お礼
回答ありがとうございました。