Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Open source fejlesztő eszközök –Térbeli adatbázisok építése – A MySql / Mintapéldák

Tanulási útmutató

Összefoglalás

Ebben a leckében bemutatunk néhány mintapéldát

Mintapéldák

Egy desktop példa

A mintapélda egy távoli MySql szerver gépen található adatbázis elérését, tábláinak megtekintését, és az adatok megváltoztatását mutatja be.

A Form1 nevű formon van egy BindingNavigator, egy DataGridView, egy ComboBox, két TextBox, egy Label, valamint két checkBox. A program indulásakor felvesszük a kapcsolatot a távoli MySql szerverrel (mapw.elte.hu), annak az „ivan” nevű adatbázisával. Az adatbázis tábláinak nevét betöltjük a ComboBoxba. A kiválasztott tábla tartalma megjelenik a DataGridViewban. A hosszú textbox SQL parancsok kiadására szolgál, míg a rövid a Binding funkció kipróbálására. A chkTables nevű checkbox a kiválasztott tábla mező neveinek és típusainak megjelenítését szabályozza. Checked=true esetén egy másik form egy textboxában kilistázza az előbbi adatokat.

Az alkalmazás kódja a következő:

Forráskód
Imports MySql.Data.MySqlClient
Public Class Form1
    Dim cnnBuilder As New MySqlConnectionStringBuilder
    Dim bS As New BindingSource
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        cnnBuilder.Server = "mapw.elte.hu"
        cnnBuilder.UserID = "proba"
        cnnBuilder.Password = "proba"
        cnnBuilder.Database = "ivan"
        BindingNavigator1.BindingSource = bS
        DataGridView1.DataSource = bS
        For Each row In getDbSchema.Rows
            ComboBox1.Items.Add(row(0))
        Next
    End Sub
    Private Function getDbSchema() As DataTable
        Dim dt As New DataTable
        Using cnn As New MySqlConnection
            cnn.ConnectionString = cnnBuilder.ConnectionString
            Try
                cnn.Open()
                Dim da As New MySqlDataAdapter("select table_name from information_schema.tables where table_schema='" & cnnBuilder.Database & "'", cnn)
                da.Fill(dt)
            Catch ex As Exception
                Call MsgBox("Nem sikerült a kapcsolat felvétel" & vbCrLf & ex.Message, MsgBoxStyle.Critical)
                cnn.Close()
            End Try
        End Using
        Return dt
    End Function
    Function getTableData(cmdText As String) As DataTable
        Dim dt As New DataTable
        Using cnn As New MySqlConnection
            cnn.ConnectionString = cnnBuilder.ConnectionString
            Try
                cnn.Open()
                Dim da As New MySqlDataAdapter
                Dim cmd As New MySqlCommand
                cmd.CommandType = CommandType.Text
                cmd.Connection = cnn
                cmd.CommandText = cmdText
                da.SelectCommand = cmd
                da.Fill(dt)
            Catch ex As MySqlException
                Call MsgBox("Hiba van a lekérdezésben" & vbCrLf & ex.Message, MsgBoxStyle.Exclamation)
            End Try
        End Using
        Return dt
    End Function
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        bS.DataSource = getTableData("select * from " & ComboBox1.SelectedItem)
        BindingNavigator1.Enabled = True
        DataGridView1.ClearSelection()
        Me.Text = ""
        chkTables.Visible = True
        If chkTables.Checked Then
            Form2.tbTabParameters.Clear()
            getTableParameters()
        End If
    End Sub
    Private Sub tbSqlCommand_KeyUp(sender As Object, e As KeyEventArgs) Handles tbSqlCommand.KeyUp
        If e.KeyCode = Keys.Enter Then
            bS.DataSource = getTableData(tbSqlCommand.Text)
        End If
    End Sub
    Private Sub DataGridView1_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick
        If e.RowIndex < 0 Or e.ColumnIndex < 0 Then Exit Sub
        Label1.Text = DataGridView1.Columns(e.ColumnIndex).Name
        TextBox1.DataBindings.Clear()
        TextBox1.DataBindings.Add("Text", bS, Label1.Text)
        Me.Text = DataGridView1.Item(e.ColumnIndex, e.RowIndex).Value
    End Sub
    Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
        Using cnn As New MySqlConnection
            cnn.ConnectionString = cnnBuilder.ConnectionString
            Try
                cnn.Open()
                Dim cmd As New MySqlCommand
                cmd.Connection = cnn
                cmd.CommandType = CommandType.Text
                cmd.CommandText = "UPDATE " & ComboBox1.SelectedItem & " SET " & DataGridView1.Columns(e.ColumnIndex).Name & "='" & DataGridView1.Item(e.ColumnIndex, e.RowIndex).Value & "' WHERE " & DataGridView1.Columns(0).Name & "='" & DataGridView1.Item(0, e.RowIndex).Value & "'"
                cmd.ExecuteNonQuery()
            Catch ex As MySqlException
                Call MsgBox("Hiba van az sql parancsban" & vbCrLf & ex.Message, MsgBoxStyle.Exclamation)
            End Try
        End Using
    End Sub
    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
        Static chkOnlyOne As Boolean = False
        chkOnlyOne = Not chkOnlyOne
        If chkOnlyOne = False Then
            Label1.Visible = False
            TextBox1.Visible = False
            DataGridView1.ReadOnly = False
        Else
            Label1.Visible = True
            TextBox1.Visible = True
            DataGridView1.ReadOnly = True
        End If
    End Sub
    Private Sub chkTables_CheckedChanged(sender As Object, e As EventArgs) Handles chkTables.CheckedChanged
        Static flag As Boolean = False
        flag = Not flag
        If flag Then
            Form2.Location = New Point(Me.Location.X + Me.Width, Me.Location.Y)
            Form2.Show()
            getTableParameters()
        Else
            Form2.tbTabParameters.Clear()
            Form2.Close()
        End If
    End Sub
    Sub getTableParameters()
        Dim dt As New DataTable
        dt = getTableData("select * from " & ComboBox1.SelectedItem)
        Form2.tbTabParameters.AppendText("Table name: " & ComboBox1.SelectedItem & vbCrLf)
        Form2.tbTabParameters.AppendText("Record count: " & dt.Rows.Count & vbCrLf)
        Form2.tbTabParameters.AppendText("Column count: " & dt.Columns.Count & vbCrLf & vbCrLf)
        Dim colName As String
        Dim colType As String
        For i = 0 To dt.Columns.Count - 1
            colName = dt.Columns(i).ColumnName
            colType = dt.Columns(i).DataType.FullName
            Form2.tbTabParameters.AppendText("Name: " & colName & vbTab & vbTab & "Type: " & colType & vbCrLf)
        Next
    End Sub
    Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
        Form2.Close()
        End
    End Sub
End Class

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.

A Társadalominformatika: moduláris tananyagok, interdiszciplináris tartalom- és tudásmenedzsment rendszerek fejlesztése az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával, az ELTE TÁMOP 4.1.2.A/1-11/1-2011-0056 projekt keretében valósult meg.
A tananyag elkészítéséhez az ELTESCORM keretrendszert használtuk.