C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 127 を表示中)
■75261 / )  Re[4]: ArrayListとMDBのやりとり
□投稿者/ MP枯渇ウィザード (6回)-(2015/03/09(Mon) 15:52:44)
No75259 (WebSurfer さん) に返信
> ■No75256 (MP枯渇ウィザード さん) に返信
>>■No75255 (WebSurfer さん) に返信
> >>■No75254 (MP枯渇ウィザード さん) に返信
> >>
>>>>ArrayListを使っている場合でも、何かしらのプロパティを引っ張ってきてループ処理になるのでしょうか?
> >>
> >>基本的にそうです。ただし「何かしらのプロパティを引っ張って」ではなくて ADO.NET ラ
> >>イブラリを使ったコードを自力で書くことになるはずです。
>>
>>御返答ありがとうございます。
>>やはりそうなりますよね。
>>
>>        Dim cn As New OleDb.OleDbConnection
>>        'コマンド用変数
>>        Dim SQLcm As OleDb.OleDbCommand = cn.CreateCommand
>>        'Accessファイルの格納変数
>>        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
>>        "Data Source = " & TargetMDB & ";"
>>        'データベースを開く
>>        cn.Open()
>>
>>        For i = 0 To ReadJdg.Count - 1
>>            Debug.WriteLine(ReadJdg(i))
>>            SQLcm.CommandText = "insert into judge values('" & ReadJdg(i) & "')"
>>            SQLcm.ExecuteNonQuery()
>>        Next
>>とすると、System.InvalidCastException
>>演算子 '&' は 文字列 "insert into judge values('" と 型 'String()' に対して定義されていません。
>>とエラーを吐きます。
>>単にSQL文作るために文字列連結したいだけなのに・・・
> 
> まず、ループで回すものが間違ってます。あと、パラメータ化しましょう。


御返答ありがとうございます。

           For i = 0 To ReadJdg.Count - 1
                Dim temp As String()
                temp = ReadJdg.Item(i)
                SQLcm.CommandText = "insert into judge values('" & temp(0) & "','" & temp(1) & "','" & temp(2) & "','" _
                                    & temp(3) & "','" & temp(4) & "','" & temp(5) & "'," & temp(6) & "," _
                                    & temp(7) & "," & temp(8) & ",'" & temp(9) & "');"
                SQLcm.ExecuteNonQuery()
            Next

とすることでうまくいきました。
tenpを作る前はSQL文字列にSystem.String(?)と入ってきて、何の事?ってなりましたが、
ここでいうtempがパラメータ化なのかな、と勝手に納得しています。
ありがとうございました。

解決済み
返信 編集キー/


管理者用

- Child Tree -