Итак, перетаскиваем на форму DataGridView, ComboBox, TextBox, Button и Label. Добавляем им обработчики событий Form1_Load, Form1_FormClosing, Button1_Click, ComboBox1_SelectedIndexChanged. Еще к проекту через меню "Проект"->"Добавить ссылку..." нужно подключить "MySql.Data" для работы с базой MySql.
Public Class Form1 Public conn As New MySql.Data.MySqlClient.MySqlConnection ' строка подключения Public cmd As New MySql.Data.MySqlClient.MySqlCommand ' строка запроса ' сервер, БД, логин, пароль Public BDServer As String = "localhost" Public BDName As String = "mydatabase" Friend login As String = "mylogin" Friend password As String = "mypassword" Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' формируем строку подключения conn.ConnectionString = "server=" & BDServer & "; uid=" & login & "; pwd=" & password & "; database=" & BDName & ";" Try conn.Open() ' подключаемся cmd.Connection = conn ' связываем строку запроса с подключением Catch ex As Exception ' если не удалось подключится, сообщаем об этом MessageBox.Show("Ошибка подключения к базе данных: " & ex.Message) End ' выход из программы End Try Button1.Text = "Выполнить запрос" FillCombo() ' заполним ComboBox1 названиями таблиц из базы End Sub Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing Try conn.Close() ' закрываем подключение при выходе из программы(для порядка) Catch : End Try End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim reader As MySql.Data.MySqlClient.MySqlDataReader ' обьявляем DataReader cmd.CommandText = TextBox1.Text ' берем строку запроса из текстового поля cmd.Prepare() ' подготавливаем строку запроса reader = cmd.ExecuteReader() ' выполняем запрос, теперь в DataReader у нас таблица из БД DataGridView1.Columns.Clear() ' очистка ДатаГрида ' проходим по колонкам таблицы и создаем аналогичные в ДатаГриде For k As Integer = 0 To reader.FieldCount() - 1 DataGridView1.Columns.Add(reader.GetName(k), reader.GetName(k)) Next Dim i As Integer = 0 ' счетчик While (reader.Read()) ' проходим по строкам в таблице DataGridView1.Rows.Insert(i, 1) ' создаем строку в ДатаГриде ' проходим по ячейкам в строке и заполняем соответсвующие в ДатаГриде For k As Integer = 0 To reader.FieldCount() - 1 Try DataGridView1(k, i).Value = reader.Item(k) Catch DataGridView1(k, i).Value = "DATA_ERROR" End Try Next i += 1 End While reader.Close() ' закрываем DataReader Label1.Text = "Строк: " + i.ToString ' количество строк в таблице End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged ' в зависимости от выбранной таблицы в ComboBox формируем в TextBox'е соответствующий запрос на выборку TextBox1.Text = "SELECT * FROM " & ComboBox1.Text End Sub Private Sub FillCombo() ' функция заполнения ComboBox1 названиями таблиц из базы Dim reader As MySql.Data.MySqlClient.MySqlDataReader ' обьявляем DataReader cmd.CommandText = "SHOW TABLES FROM " & BDName & ";" ' запрос на выборку названий всех таблиц в базе cmd.Prepare() ' подготавливаем строку запроса reader = cmd.ExecuteReader() ' выполняем запрос, теперь в DataReader у нас список таблиц в БД Dim i As Integer = 0 ' счетчик While (reader.Read()) ' проходим по названиям таблиц ' заполняем ComboBox, собственно у нас сейчас в DataReader таблица из одной колонки, ' которая называется "Tables_in_mydatabase", где mydatabase - название БД ComboBox1.Items.Add(reader.Item("Tables_in_" & BDName)) i += 1 End While Label1.Text = "Таблиц:" + i.ToString() ' количество таблиц в базе reader.Close() ' закрываем DataReader ' если есть таблицы в списке, делаем текущей первую If (ComboBox1.Items.Count > 0) Then ComboBox1.SelectedIndex = 0 End Sub End Class
Если неохота делать таблицы, можете создать базу mydatabase и выполнить запрос.
CREATE TABLE `mydatabase`.`mytable1` ( `id` INT NOT NULL AUTO_INCREMENT , `text` VARCHAR( 20 ) NOT NULL DEFAULT '', PRIMARY KEY ( `id` ) ) ENGINE = MYISAM ; INSERT INTO `mytable1` VALUES (NULL, 'Первая запись'); INSERT INTO `mytable1` VALUES (NULL, 'Вторая запись'); CREATE TABLE `mydatabase`.`mytable2` ( `id` INT NOT NULL AUTO_INCREMENT , `val` INT NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM ; INSERT INTO `mytable2` VALUES (NULL, 111); INSERT INTO `mytable2` VALUES (NULL, 222); INSERT INTO `mytable2` VALUES (NULL, 333);
Можно его выполнить и через программу, только выставьте свойство TextBox1.Multiline = True, выполните запрос и перезапустите программу.
Теги: исходник, просмотрщик базы