- - PR -
SQL内のパラメータの記述(ADODB.Parameter使用時)
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-10-08 11:47
いつもお世話になっております。
ちょっと前(もしかして昔?)の技術のお話で恐縮なのですが、 ADODB.Parameterを使った場合のSQLの記述方法に関してお尋ねします。 例えば、Where条件の内容をパラメータとした場合、 AccessVBAでは SELECT * FROM TABLE1 WHERE FIELD1 = Value1 としようが、 SELECT * FROM TABLE1 WHERE FIELD1 = ? としようが、 正常に動作するようなのですが、 ODBC経由でAccessに接続した場合 SELECT * FROM TABLE1 WHERE FIELD1 = ? の記述方法でないと、「パラメータを指定してください」と怒られます。 また、SQLServerに関しては、?で指定しないと、列名がおかしいと怒られます。 とりあえず、「?」で指定しておけば良いのかな、という認識に落ち着こうかと しているのですが、なんとなく不安なので、明確なガイドラインのようなものが あればお教えいただきたいと思います。宜しくお願い致します。 | ||||
|
投稿日時: 2008-10-08 13:15
プレースホルダの指定方法は、データベースの種類ではなく、データソースとデータプロバイダによって決まります。
経験則ですみませんが、 ・ODBC経由 … プレースホルダーは '?' ・OLEDB経由 … プレースホルダーは '?' ・SQLServerのSQLClient経由 … プレースホルダーは '@' + 名前 ・OracleClient経由 … プレースホルダーは ':' + 名前 といった具合です。
上については、ODBC経由で接続しているためです。 下についても、おそらくODBC経由でSQLServerに接続しているからだと思います。 私も経験でしか知らないので、根拠となるような資料があれば知りたいです。 データベースが SQLServer の場合に関してはここにありました。 http://msdn.microsoft.com/ja-jp/library/aa337223(SQL.90).aspx | ||||
|
投稿日時: 2008-10-08 14:42
rain様、早速ご回答いただき、ありがとうございます。
私はてっきりADOが吸収してやってくれているとばっかり思ってました。 普段、.NETでSqlCommandとかODP.NETとか使っているときはパラメータ関連の 部分はそれ用に作ったクラス内部で隠蔽しているのであんまり意識したことがなく・・・。 今確かめてみたら、確かに@や:を使ってSQL文を生成してました。 それにしても、ADODB.ParameterのNameプロパティって何のために使うのやら。 SQL内の変数に名称バインドしてくれるわけじゃないし。 |
1