VisualBasic.NET -> Работа с БД

Автор: StormBreaker

Предишни уроци:
Цикли и масиви
GUI и събития
Класове и модули
Въведение

Методите за работа с бази от данни в VB са повече от един, но аз ще ви запозная с най-лесния и разбираем, който е много подобен на този, който всички използваме в PHP. Също така за да работите с различните видове SQL системи (MySQL, MsSQL…) и AccessDB няма нужда да ползвате различни методи, защото единствената разлика е в така нареченият connection string и в името на класа, който ще ползваме.

Защо ни е AccessDB? Защото е най-лесно да се ползва, когато ни трябва БД само в рамките на определената програма. Така тя ще работи без нужда от Mysql сървър или интернет.

Connection string
Така се нарича текстът, който се използва при свързване с определена БД. В него, подобно на SQL стринг, се задават параметри като име, парола, сървър адрес, порт, име на базата и т.н.

MySQL допълнителни библиотеки
Тъй като Visual Studio по подразбиране не съдържа необходимите библиотеки за свързване с Mysql сървър трябва да си инсталираме една добавка.
MySQL Connector .NET
Няма нищо сложно – теглите и инсталирате. По време на и след инсталацията няма нужда от никакви настройки. Единствено трябва да се окаже на Visual Studio да добави новите библиотеки в проекта. Това става ето така:

Свързване
При работа с БД в VB имаме променлива, която съдържа връзката с БД.Ще я наречем connection. Като параметър се подава connection string за дадения вид SQL система.

За mysql

Public connection As New MySqlConnection("SERVER=localhost;DATABASE=test;UID=root;PWD=parola;PORT=3306")

За да не пиша всеки път MySql.Data.MySqlClient всеки път преди MySqlConnection и другите класове, най-горе преди Public Class Form1 добавям един ред

Imports MySql.Data.MySqlClient

Това вкарва всички класове от MySql.Data.MySqlClient за директен достъп.
Кодът по-горе само декларира променливата, но не се свързва с БД. За да се свърже трябва да използваме метода

connection.Open()

например при зареждането на програмата.

За AccessDB

Public AccessConnection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb;Persist Security Info=False;")

Това важи за БД, създадени с Access 2007. При Data Source се оказва пътя до файла.
Тук също съм направил един импорт

Imports System.Data.OleDb

И при стартиране на програмата също трябва да отворим връзката:

AccessConnection.Open()

От тук нататък всичко е едно и също. Само имената на класовете се различават:
MySqlConnection <–> OleDbConnection
MySqlDataReader <–> OleDbDataReader
MySqlCommand <–> OleDbCommand
В останалата част от урока ще пиша примерите за AccessDB, но вие лесно можете да смените имената на класовете и да ползвате mysql.

Изпълняване на заявки
Ще се занимаем с 2 вида заявки – такива, които връщат в резултат редове от таблица (SELECT…) и такива, които не връщат резултат (UPDATE, INSERT, DELETE…)

Декларация на променливата за заявката:

Dim query As New OleDbCommand("INSERT INTO ...", AccessConnection)

Първият параметър е самата заявка като стринг, а вторият е връзката към БД.
Сега за да изпълним заявката имаме 2 варианта.

За да изпълним заявка, без да използваме върнати редове (ако има) ползваме

query.ExecuteNonQuery()

тази функция връща само броя на променени/добавени/изтрити редове от заявката.

Четене на върнати редове
За да можем да прочетем върнатите редове от заявката трябва да декларираме още една променлива:

Dim reader As OleDbDataReader

сега трябва да присвоим на този DataReader върнатото от заявката, като вече използваме ExecuteReader() вместо ExecuteNonQuery()

reader = query.ExecuteReader()

И сега цикълът за четене на резултатите:

While reader.Read()
... Изпълнява се за всеки ред ...
End While

Вътре в цикъла полетата от резултата се четат така:

reader.Item("ime_na_poleto")

като върнатата от функцията стойност е тази от съответното поле в съответния ред.

Затваряне на четеца
След като свършите с цикъла за взимане на информацията задължително трябва да затворите datareadera

reader.Close()

Ако не го затворите при следващата заявка програмата ще ви изведе грешка.

Затваряне на връзката
Връзката обикновено се затваря в края на програмата без да има нужда вие да я затваряте ръчно, но ако ви се наложи можете да го направите така:

AccessConnection.Close()

По-долу във видеото ще демонстрирам свързване с Access база данни, като ще си направим готварска книга.

Вашият коментар