Webmaster общности: Predpriemach.com | SearchEngines.bg

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

    visual basic уроци

    Автор: 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 база данни, като ще си направим готварска книга.