• ベストアンサー

VBで配列に格納されているデータをUPDATEや INSERTするには

配列変数にあるデータを一度に更新や追加したい場合SQL文を(繰り返し)ループするのが良いのでしょうか?ほかに方法はありますか 例えば dim AAA(100) as integer dim BBB(100) as string にさまざまな値データが入っているとしてそれらを、SQL文にして書き込みしたい 場合です。データテーブルはあるものしますが、何番目の配列までデータが 入っているか可変です よろしくお願い致します

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

ストアドプロシージャを作成して、配列引数を渡して実行する、という手があります。 サーバー側で処理されるので、一度の通信ですみ、その分パフォーマンスがあがります。

mehiro2
質問者

お礼

早速の回答ありがとうございました。 SQLを始めて間もないので説明不測でした。 ストアドプロシージャの意味がわかりませんでしたので勉強します

その他の回答 (1)

  • oribeyaki
  • ベストアンサー率45% (18/40)
回答No.2

相手がOracleで、oo4oで接続しているのでしたら、 配列型のバインド変数で渡してやることができます。 もちろん、パフォーマンスの改善にもなります。 ただ対象のDBが何かにより、手法がいろいろありますので、 そのあたりの事を書かれると皆さんも答えやすいのではないでしょうか。

mehiro2
質問者

補足

お返事有難うございました 初心者で御指摘の部分があっているか判りませんが Microsofg SQL Serverです

関連するQ&A

  • データ数の定まらないデータをもれなく配列変数に格納する方法

    あるときは10個またあるときは100個のデータがあるとします。 しかし、データの数は1000個になるかもしれませんし、1個になるかもしれません。 ただし、データ数が0個以下になることはありません。 このような、データ数の定まらないデータを確実にもれなく配列変数に代入したいのですが、方法がわかりません。 変数で dim hairetu(kazu) as integer として配列の数を設定できれば良いのですが、どうも無理のようです。 データの最大数(仮に1000個)を決めて dim hairetu(1000) as integer とするしかないのでしょうか。 何か良い方法はありませんでしょうか。

  • 文字列を改行で区切り配列に格納したい

    データをプログラムに明記し、プログラムで いろいろ加工したり処理をしたい場合ですが、 例えば、 Dim hairetu(10) As String hairetu(0) = "aaa" hairetu(1) = "bbb" hairetu(2) = "ccc" 途中省略 hairetu(10) = "zzz" これをイメージとして以下のように行う方法はありますでしょうか あくまでもイメージとしてです。 Dim mojiretu As String Dim hairetu(10) As String mojiretu="aaa\nbbb\nccc\n途中省略zzz" ← hairetu=mojiretuを”\n”で区切り順次配列に格納する ←は、mojiretu="aaa bbb ccc 省略 zzz"  のようなイメージです。 よろしくお願いします

  • VB 配列

    今,VBでテキストファイルを読込み配列に入れるという作業を書いたのですが,うまくいきません. 初回例外が発生してしまいます.配列は文字列の配列になります. どなたかご教示のほどよろしくお願いいたします. 'ファイルの読込み Dim path1 As String = "C:\Users\aleph_H.S\Desktop\気象台データインポートツール\気象台データインポートツール\" Dim path2 As String = "気象台データリスト.txt" Dim Mypath As String = path1 + path2 ' StreamReader の新しいインスタンスを生成する Dim cReader As New System.IO.StreamReader(Mypath, System.Text.Encoding.Default) ' 読み込んだ結果をすべて格納するための変数を宣言する Dim stResult As String = String.Empty Dim matrix(,) As String Dim ic As Long = 0 Dim icc As Long = 0 ReDim Preserve matrix(80, 3) ' 読み込みできる文字がなくなるまで繰り返す While (cReader.Peek() >= 0) ' ファイルを 1 行ずつ読み込む Dim stBuffer As String = cReader.ReadLine() ' 読み込んだものを追加で格納する stResult &= stBuffer & System.Environment.NewLine ic = ic + 1 'カンマ区切りで分割して配列に格納する Dim stArrayData As String() = stResult.Split(","c) For Each sstData In stArrayData icc = icc + 1 '文字列をInteger型に変換 matrix(ic - 1, icc - 1) = sstData Next End While cReader.Close()

  • VBのString型の配列をVCで受け取るには?

    VBでString型の配列として定義されている変数を VCのプログラムで受け取るにはどうすればよいのでしょうか? 試しにVBでString型の配列を作って DLLのC_TESTというファンクションを呼び出すという 処理を作ってみたのですが、コンパイルエラーになってしまいます。 なにかおかしいところありますか? そもそもVCにはString型ってないんですよね? プログラミング初心者ですので、変な言葉遣いに なってるかもしれませんが宜しくお願いします。 VB Declare Function C_TEST Lib "\test.dll" (ByVal data() As String) As Integer Dim A(1) As String dim rtn as Integer A(0)="あああ" A(1)="いいい" rtn= C_TEST(A) VCのプログラム int _stdcall C_TEST(LPSTR A[2] ){ AfxMessageBox( A[0] ); return(0); }

  • VB.net 引数で配列変数を渡す際の要素数

    VB.net 2010 の質問です。 配列変数を他のプロシージャに引数で渡す際の、配列変数の要素数をあらかじめ宣言していないとエラーになります。 Dim Hairetsu() As String ' ←エラー Dim Hairetsu(100) As String ' ←正常 Public Sub aaa(ByRef Hairetsu() As String) Hairetsu(0) = "Test" '←正常の場合と、エラーの場合 End Sub Hairetsu(100) のように、要素数を宣言していると、エラーにならないのですが、 プログラム中、要素数がどこまで増加するか、分かりません。 Hairetsu()のように、要素数未確定の配列変数を渡すことは出来ないのでしょうか。 ご存知の方がいらっしゃいましたら、なにとぞアドバイスの程、よろしくお願いいたします。

  • VB.NETで、配列をテーブルに変換する。

    VB.NETで、一次元配列string()にあるデータを、DataTableに変換 したいのですが、「型'String'の値を'System,Data,DataTable'に変換できません。」 と、エラーが発生してしまいます。 s1に、配列データが入っています。 Dim dt As DataTable Dim cnt As Integer Dim i As Integer dt = New DataTable count = s1.Length For i = 0 To cnt - 1 dt = CType(s1(i), DataTable) Next 解決方法が見つからず、行き詰っております。 宜しくお願い致します。

  • Generic.Listに1次元配列の配列を格納したい(VB2005)

    VB2005の質問です。 変数ghogeにString型の1次元配列の配列を格納したいと考えています。 ----------------------------------------------- 'a) Dim hoge()() As string = _       {New string() {"a1", "b1", "c1"}, _       New string() {"a2", "b2", "c2"}, _       New string() {"a3", "b3", "c3"}} Dim ghoge As New Generic.List(of )   'b) MessageBox.Show(ghoge(1)(1))      ' "b2"と表示したい ----------------------------------------------- 質問内容は、(a)を(b)の初期値として設定するにはどのようにすればよいか、ということです。 (b)がGeneric.ListでなくArrayListの場合だと、   Dim ghoge As New ArrayList(hoge) でhoge配列を格納できますが、Generic.Listの場合はどのような構文にすればよいでしょうか。 現在は、下記のような処理でghogeに値を格納しています。 ------------------------------------------------------------ Dim ghoge As New Generic.List(Of Generic.List(Of String)) Dim aryhoge1 As New Generic.List(Of String)(New String() {"a1", "b1", "c1"}) Dim aryhoge2 As New Generic.List(Of String)(New String() {"a2", "b2", "c2"}) gary_hoge.Add(ary_hoge1) gary_hoge.Add(ary_hoge2) MessageBox.Show(gary_hoge(1)(1))    ' "b2"と表示される ------------------------------------------------------------ どうぞよろしくお願い致します。

  • 配列について

    配列の要素数をinteger型にいれたいのですがどうしたらいいですか? 例   Dim A() As String   Dim B AS Integer       A = "あ","い","う" Aの要素数3をBに入れたいのです。 この配列の作りかたもあっているか分かりませんがよろしくお願いします。

  • 配列方法とCall文とFor文について

    VB(A)について勉強中なのですが、わからない所があるので、簡単に教えていただけらたと思っています。 まず配列方法に関してですが、 Dim aaa() As Long という方法を見かけるのですが、調べてみると要素が不定と書いて有りました。 そこで、もし2次元配列、3次元配列で要素が不定の場合はどう書いたらよいのですか? もし、要素が確定しているなら Dim aaa(10,10) As Long Dim aaa(10,10,10) As Long とかけますよね。 次にCall文なのですが、 Call文はサブプロシージャを呼び出すための物と認識しています。 そこで、 Call BBB(...) とあれば Sub BBB(... As ○○○) と書いてある物を見ました。 ここで、(... As ○○○)とはどういう意味なのでしょうか? それと、Call文を使った場合は、戻り値などの設定は無いのでしょうか? つまり、Call文を使ったら一方通行にSubを呼び出すだけと言う物なのでしょうか? あと、For文に関してですが、 ある例題を見たら For Each ... In ××× と書いて有りましたが、どういう意味なのでしょうか? 色々書かせていただきましたが、分からない事だらけで困っています。 アドバイス宜しくお願いいたします。

  • 配列方法とCall文とFor文について

    VB(A)について勉強中なのですが、わからない所があるので、分かりやすく教えていただけらたと思っています。 まず配列方法に関してですが、 Dim aaa() As Long という方法を見かけるのですが、調べてみると要素が不定と書いて有りました。 そこで、もし2次元配列、3次元配列で要素が不定の場合はどう書いたらよいのですか? もし、要素が確定しているなら Dim aaa(10,10) As Long Dim aaa(10,10,10) As Long とかけますよね。 次にCall文なのですが、 Call文はサブプロシージャを呼び出すための物と認識しています。 そこで、 Call BBB(...) とあれば Sub BBB(... As ○○○) と書いてある物を見ました。 ここで、(... As ○○○)とはどういう意味なのでしょうか? それと、Call文を使った場合は、戻り値などの設定は無いのでしょうか? つまり、Call文を使ったら一方通行にSubを呼び出すだけと言う物なのでしょうか? あと、For文に関してですが、 ある例題を見たら For Each ... In ××× と書いて有りましたが、どういう意味なのでしょうか? 色々書かせていただきましたが、分からない事だらけで困っています。 アドバイス宜しくお願いいたします。