- - PR -
OleDBcommandのパラメータを複数使う場合は?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-17 17:36
こんにちは
現在SQL Server 2000とVB.NETを使用しています。 OleDBconnectでSQL ServerにデータをInsertしているのですが、 OLEcmd.CommandText = "Insert into Table " & _ "(Field1,Field2・・・,Field40) " & _ "Values (?,?,?・・・) OLEcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("Field1", "Value")) OLEcmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("Field2", "Value")) ・ ・ ・ 上記のように記述しています。 しかし、数が多くなるとどのパラメータが何番目かわからず管理し難いです。 SQLCommandはパラメータに「@」を付けて区別できるようですが、 OLEDBCommandの場合はパラメータは記述順に使用するしかないのでしょうか? 詳しい方がいましたらアドバイスお願いします。 | ||||
|
投稿日時: 2003-11-18 09:17
SQL Server 2000を使用しているのであれば、SqlCommandを使用すればよいのでは?
OleDbはODBCを元にしているので、ODBCが名前付きパラメータをサポートしていないため、サポートされていません。 | ||||
|
投稿日時: 2003-11-18 10:05
こんにちは
SqlCommandを使わない理由は いずれリンクサーバーでDB2も参照したいからです。 おそらく、SqlCommandだとうまくいきません。 回答どうもありがとうございます。 大人しく順番通りにパラメータを使おうと思います。 | ||||
|
投稿日時: 2003-11-18 11:38
SQL文は一緒でよかったですか? 私はSQL ServerとOracleに対応させるため、いろいろ苦労していますが。 | ||||
|
投稿日時: 2003-11-18 13:21
こんにちは。
もしかすると的外れかもしれませんが、僕がINSERT,UPDATEする時の事を書いておきます。 VB.NETを使われているという事なので・・・ 画面でOleDbAdapterのプロパティでInsertCommandのParameters(コレクション)のメンバに DBの項目を追加して、ソースからは ' データベースOPEN Me.OleDbConnection1.Open() ' 既存のテーブルクリア Me.DataSet11.Tables("AAAA").Clear() ' データセット With Me.OleDbDataAdapter1.InsertCommand.Parameters .Item(0).Value = Item1 .Item(1).Value = Item2 .Item(2).Value = Item3 .Item(3).Value = Item4 .Item(4).Value = Item5 .Item(5).Value = Item6 End With Me.OleDbDataAdapter1.InsertCommand.ExecuteNonQuery() という感じでやっています。 これだと、たくさん項目があってもあまり苦労しないと思います。 もし、的外れなスレだったらごめんなさい。 | ||||
|
投稿日時: 2003-11-18 14:23
Wandayuさん、こんにちは。
リンクサーバーを使用するんですよね? という事は、SQL ServerがDB2と接続するのであって、クライアントから直接DB2に接続するわけではありませんから、System.Data.SqlClient のクラスを使用しても構わないはずです。 リンクサーバー自体、SQL Server のクライアントに、透過的に他のDBへのアクセスを提供する仕組みなので、基本的にSQL Server の SQL構文もそのまま通ります。 | ||||
|
投稿日時: 2003-11-18 15:18
こんにちは
ジェミニさん 返答ありがとうございます。 こういう方法もあるのですね。参考になります。 ためしに、 引用----------------------------------------------- With Me.OleDbDataAdapter1.InsertCommand.Parameters .Item(0).Value = Item1 --------------------------------------------------- の部分を .Item("パラメータ名").Value = Item1 にしたところうまくいきました。 どうもありがとうございました。 | ||||
|
投稿日時: 2003-11-18 15:31
きくちゃんさん
こんにちは リンクサーバーの件ではお世話になりました。 どうも私の調査不足のようですね。 SQLcommandを使うことによる不具合が無い以上 OLEDBcommandを無理に使う必要はないのかもしれません。 アドバイスどうもありがとうございます。 |
1