SQL Query in ein Array

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    SQL Query in ein Array

    Es gibt hier zwar schon Threads mit leichten ansätzen, jedoch irgendwie nicht wirklich das, was ich benötige.

    Ich habe nun endlich hinbekommen in VB eine MySQL DB einzubinden und auch auszulesen in ein DataGrid.
    Dies möchte ich aber nicht, ich möchte das Result des Querys in ein Array schreiben.

    Bsp.: ich habe den SQL-String

    SQL-Abfrage

    1. "SELECT `name`, `datum`, `text` FROM `tabelle`"

    möchte ich ein doppel Array

    PHP-Quellcode

    1. $row[zeile1]['name'] = "Hugo"
    2. $row[zeile1]['datum'] = "23.10.1998"
    3. $row[zeile1]['text'] = "irgendein text von Hugo"
    4. $row[zeile2]['name'] = "Fritz"
    5. $row[zeile2]['datum'] = "02.05.1986"
    6. $row[zeile2]['text'] = "irgendein text von Fritz"


    usw. jenachdem wieviele Zeilen der Query ausspuckt.

    Hier mal mein QuellText

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Data
    3. Imports System.Windows.Forms
    4. Imports MySql.Data.MySqlClient
    5. Module mdlSQL
    6. 'Inherits System.Windows.Forms.Form
    7. Dim connection As MySqlConnection
    8. Dim dbConnected As Boolean
    9. Dim data As DataTable
    10. Dim da As MySqlDataAdapter
    11. Dim cb As MySqlCommandBuilder
    12. Public Sub dbConnect(ByVal dbHost As String, ByVal dbUser As String, ByVal dbPassword As String, ByVal dbName As String)
    13. If Not connection Is Nothing Then connection.Close()
    14. Dim connStr As String
    15. connStr = "server=" + dbHost + ";user id=" + dbUser + "; password=" + dbPassword + "; database=" + dbName + "; pooling=false"
    16. Try
    17. connection = New MySqlConnection(connStr)
    18. connection.Open()
    19. dbConnected = True
    20. Catch ex As MySqlException
    21. MessageBox.Show("Error connecting to the server: " + ex.Message)
    22. dbConnected = False
    23. End Try
    24. End Sub
    25. Function mysql_query(ByVal sqlQuery As String) As DataTable
    26. data = New DataTable
    27. da = New MySqlDataAdapter(sqlQuery, connection)
    28. cb = New MySqlCommandBuilder(da)
    29. da.Fill(data)
    30. mysql_query = data
    31. End Function
    32. End Module


    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. DataGrid.DataSource = mysql_query("SELECT `name`, `datum`, `text` FROM `tabelle`")
    3. End Sub

    RE: SQL Query in ein Array

    Hallo Dodo,

    ich habe eine Idee wie du deine Daten in ein Array bekommen kannst. Allerdings habe ich das so auch noch nicht gemacht, kann daher nicht garantieren das es funktioniert.

    Als erstes legst du dir eine Variable vom Typ Variant an.
    Das Ergebniss der SQL Abfrage speicherst du nicht in einem DataGrid, sondern in einem Recordset.
    Das Recordset liest du mit GetRows aus und speicherst es in der Variant Variable,

    also

    Variantvariable = GetRows(Recordset)

    Die Variantvariable ist jetzt ein mehrdimensionales Array. Ich hoffe es funktioniert und es hilf dir weiter.

    mfg

    Bart
    Ich glaube ich habs jetzt so ähnlich geschafft =) is vielleicht nicht die eleganteste Lösung, aber reicht für mich, weil sie dit macht, was ich möchte.

    Wens interessiert:

    VB.NET-Quellcode

    1. Function mysql_query(ByVal sqlQuery As String) As DataTable
    2. On Error Resume Next
    3. Dim data As DataTable
    4. data = New DataTable
    5. da = New MySqlDataAdapter(sqlQuery, connection)
    6. cb = New MySqlCommandBuilder(da)
    7. da.Fill(data)
    8. If Err.Number <> 0 Then
    9. MsgBox(Err.Description)
    10. End If
    11. mysql_query = data
    12. End Function


    Wenn ich funktion benutze:

    VB.NET-Quellcode

    1. Dim data As DataTable
    2. data = mysql_query("SELECT *, DATE_FORMAT(`from_time`, '%H:%i') AS `f_time`, DATE_FORMAT(`to_time`, '%H:%i') AS `t_time`, DATE_FORMAT(`remember_time`, '%H:%i') AS `r_time` FROM `events` WHERE `event_date` = '" + calDates.SelectionRange.Start + "'")
    3. lstDates.Items.Clear()
    4. For Me.i = 0 To data.Rows.Count - 1
    5. eventArray(i, 0) = data.Rows.Item(i).Item("id").ToString
    6. eventArray(i, 1) = data.Rows.Item(i).Item("title").ToString
    7. eventArray(i, 2) = data.Rows.Item(i).Item("text").ToString
    8. eventArray(i, 3) = data.Rows.Item(i).Item("f_time").ToString
    9. eventArray(i, 4) = data.Rows.Item(i).Item("t_time").ToString
    10. eventArray(i, 5) = data.Rows.Item(i).Item("r_time").ToString
    11. lstDates.Items.Add(eventArray(i, 3) & " - " & eventArray(i, 4) & ": " & eventArray(i, 1))
    12. Next


    Zumindest funktioniert es ^^