0

のようなクエリがありますSELECT ITEM FROM DETAIL WHERE TID="1"。次のような結果が返されます

m4、c1、f2、d5、k2

DATAREADER複数の値の結果を取得するために使用しています

そしてここにコードがあります

Dim res as string = "SELECT ITEM FROM DETAIL WHERE TID='1'"
CMD = New MySqlCommand(res, con)
result = CMD.ExecuteReader()
while result.HasRows
  result.Read()
  array(indeks) = result("ITEM")
end while

代わりに、結果を 1 つずつ各配列のインデックスに格納し、

配列(0)=m4

配列(1)=c1 ,.....

そのすべてを「m4」、「c1」、「f2」、「d5」、「k2」などの形式で単一の文字列変数に格納したい

形式は、上記の例のように、各結果のセパレーターとして単一引用符とコンマ (,) です (コンマは、まだ結果がある場合にのみ表示されます) 。

どうすればvb.netでそれを行うことができますか? データベースとしてmysqlを使用しています

更新されたコード

    Dim cnt As String = "select count(*) from detail where kode_faktur= '" & 1 & "' "
    Dim max As Int32
    CMD_sup = New MySqlCommand(cnt, conn.konek)
    max = Convert.ToInt32(CMD_sup.ExecuteScalar())
    CMD_sup.Connection.Close()

    Dim result As MySqlDataReader

    Dim resultString As String
    Dim isFirstResult = True

    Dim arayITEM() As String
    Dim res As String = "select kode_brg from detail where kode_faktur= '" & 1 & "' "
    CMD = New MySqlCommand(res, conn.konek)
    result = CMD.ExecuteReader()


    ReDim arayITEM(max)
    If result.HasRows Then
        For i As Integer = 0 To max - 1
            result.Read()
            arayITEM(i) = result("kode_brg")
        Next
    End If

    resultString = "'" & String.Join("','", arayITEM) & "'"
    'MsgBox("HASIL : " & resultString)

ここにスクリーンショットがあります

ここに画像の説明を入力

最後の配列の要素の末尾にセパレーターは必要ありません ( ,'')

4

2 に答える 2

1

これはどう :

Dim res as string = "SELECT ITEM FROM DETAIL WHERE TID='1'"
CMD = New MySqlCommand(res, con)
result = CMD.ExecuteReader()
Dim resultString as String = ""
Dim isFirstResult = True
while result.HasRows
  result.Read()
  If Not isFirstResult Then 
    resultString &= string.Format(",'{0}'",result("ITEM"))
  Else 
    isFirstResult = False
    resultString &= string.Format("'{0}'",result("ITEM"))
  End If
end while

または、配列を使い続けたいが、単一の文字列バージョンも必要な場合は、次を使用して配列を変換できますString.Join

Dim resultString As String = "'" & String.Join("','", array) & "'"

String.Join次の要素が存在する場合にのみセパレーターを追加するのに十分賢いです。したがって、上記の両方のアプローチで同じ結果が得られるはずです。

于 2014-01-25T07:36:32.203 に答える