[VB.NET] Модуль для работы с MySQL

Цукер

Сам себе призедент
Регистрация
5 Мар 2008
Сообщения
410
Реакции
379
Не так давно решил перейти с MSSQL на mysql изза нужных мне приемуществ.
Работа с этой СУБД очень слабо освещен в сети(ну или уменя гугл не правильный), потому решил накидать простой модуль для выполнения запросов в БД. (Потрачено на него было 10 минут потому прошу строго не судить)

Для работы с mysql в VS надо скачать конектор Для просмотра ссылки Войди или Зарегистрируйся в свойствах проекта добавить dll - и не забудьте поставить чтобы он копировался вместе с проектом иначе не будет работать на машине без этого канектора, так же стоит отметить что VS по не обьяснимым причинам - па разному работает с разными версимя этого канектора, поэтому используйте ту версию конектора с которой компилировали.

Сам модуль:
Состоит из нескольких функций(мне было лениво пистаь коменты в коде, так как писалось для себя, потому опишу тут)
InitDB() - просто проверка коректности подключение и наличие прав на БД, можно использовать например для записи сессий - возвращает True если все удачно или False если все печально
insertData(sqlstring As String) - выполняет запрос в БД с командой инсерт, возвращает ID добавленой записи.
updateData(sqlstring As String) - выполняет запрос с командой Update возвращает True если все удачно или False если все печально

Выборки из базы в данном модуле нет, так как она мне ненужна было но добавить ее по аналогии не сложно.. или используйте DataGridView для вывода данных.

КОД:
Код:
Imports MySql.Data.MySqlClient
Module base
  Public conn As New MySqlConnection("Server=127.0.0.1;User id=ПОЛЬЗАВАТЕЛЬ;password=ПАРОЛЬ;database=БАЗА-ДАННЫХ")
  Public Function InitDB()
  Dim statecondb As Boolean
  Dim cmd As New MySqlCommand
  Try
  conn.Open()
  cmd.Connection = conn
  cmd.CommandText = "INSERT INTO `test_table` (`id`, `test_info`) VALUES (NULL, '" & Now & "');"
  Try
  cmd.ExecuteNonQuery()
  Catch ex As Exception
  End Try
  cmd.CommandText = "SELECT * FROM `test_table`"
  Dim reader As MySqlDataReader
  reader = cmd.ExecuteReader()
  While reader.Read()
  statecondb = True
  End While
  Catch ex As Exception
  statecondb = False
  End Try
  conn.Close()
  Return statecondb
  End Function
  Public Function insertData(sqlstring As String)
  Dim statecondb As String
  Dim cmd As New MySqlCommand
  Try
  conn.Open()
  cmd.Connection = conn
  cmd.CommandText = sqlstring
  Try
  cmd.ExecuteNonQuery()
  Catch ex As Exception
  msg.errormsg("Не возможно добавить запись в БД (INSERT_DATA)")
  End Try
  cmd.CommandText = "SELECT LAST_INSERT_ID();"
  Dim reader As MySqlDataReader
  reader = cmd.ExecuteReader()
  While reader.Read()
  statecondb = reader.GetValue(0)
  conn.Close()
  Return statecondb
  Exit Function
  End While
  Catch ex As Exception
  msg.errormsg("Не возможно определить успешность подключения к БД")
  End Try
  conn.Close()
  statecondb = 0
  Return statecondb
  End Function
  Public Function updateData(sqlstring As String)
  Dim statecondb As Boolean
  Dim cmd As New MySqlCommand
  Try
  conn.Open()
  cmd.Connection = conn
  cmd.CommandText = sqlstring
  Try
  cmd.ExecuteNonQuery()
  statecondb = True
  Catch ex As Exception
  msg.errormsg("Не возможно обновить запись в БД (UPDATE_DATA)")
  End Try
  Catch ex As Exception
  msg.errormsg("Не возможно проверить подключение к БД (UPDATE_DATA)")
  End Try
  conn.Close()
  Return statecondb
  End Function
End Module
модуль вывода ошибок и записи в лог
Код:
Imports System.Diagnostics
Module msg
    Public Sub errormsg(msg As String)
        Dim logStatus As System.Diagnostics.EventLog
        logStatus = New System.Diagnostics.EventLog
        logStatus.Source = "StatusSource"
        logStatus.WriteEntry(Now & "> " & "{Error} >" & msg, EventLogEntryType.Information)
        MsgBox(msg, MsgBoxStyle.Critical, "")
    End Sub
    Public Sub infomsg(msg As String)
        Dim logStatus As System.Diagnostics.EventLog
        logStatus = New System.Diagnostics.EventLog
        logStatus.Source = "StatusSource"
        logStatus.WriteEntry(Now & "> " & "{Info} >" & msg, EventLogEntryType.Information)
        MsgBox(msg, MsgBoxStyle.Information, "")
    End Sub
End Module



Использование:
base.updateData("sql запрос")
base.insertData("sql запрос")

Конечно можно использовать и другие методы работы с бд, но официальные както приятнее)
 
Последнее редактирование:
лучше, конечно, вывести свойства подключения в файл конфигурации и сделать запрос параметризированным, но на скорую руку сойдёт
 
Есть ошибки в коде, пожалуйста, не забудьте проверить линию 105
 
Для просмотра ссылки Войди или Зарегистрируйся

Код:
Imports System.Data

Imports MySql.Data
Imports MySql.Data.MySqlClient

Public Class Tutorial1
    Public Shared Sub Main()
        Dim connStr As String = "server=localhost;user=root;database=world;port=3306;password=******;"
        Dim conn As New MySqlConnection(connStr)
        Try
            Console.WriteLine("Connecting to MySQL...")
            conn.Open()
        Catch ex As Exception
            Console.WriteLine(ex.ToString())
        End Try
        conn.Close()
        Console.WriteLine("Done.")
    End Sub
End Class
 
Назад
Сверху