A múltkor röviden bemutattam a PostgreSQL adatbázist. Most ideje, hogy az akkor felvitt adatokat juttassuk ki a felhasználói felületre!
Erre én Visual Basic-et és a .Net Framework-öt fogom használni. Tudom-tudom, hogy C# a legtrendibb .Net nyelv, de tekintve, hogy én a VB -n tanultam programozni ezért az nekem mindig is kicsit a szívem csücske marad :D (Meg egyébként is. C#-ot használok a melóhelyen. Kell a változatosság!!!)
Szükségünk lesz a .Net driverre, amelyet itt lehet letölteni. Ez a gyakorlatban két dll-t jelent (Mono.Security.dll, Npgsql.dll) Ezeket adjunk a projekt referenciájához, illetve abban az osztályban ahol használni szeretnénk ott Imports Npgsql -t is meg kell adni.
Nyissuk meg a tehát a kedvenc IDE toolunkat és csináljunk egy új winforms projektet. A form1-hez adjunk a következőket:
-> Textbox(TbKeres névvel)
-> DataGridView (GvTalalatok névvel)
A textboxhoz vegyünk fel textchanged eseményt, majd kezdjük annak a törzsébe írni, a következőket:
1) A kapcsolat felépítését.
'Felépítjük a connectionstringet.
Dim ConnBilder As NpgsqlConnectionStringBuilder = New NpgsqlConnectionStringBuilder()
ConnBilder.CommandTimeout = 15
ConnBilder.Database = "test"
ConnBilder.Port = 5432
ConnBilder.Password = "postgres" 'Jajj a titkos jelszavam :)
ConnBilder.Host = "localhost"
ConnBilder.UserName = "postgres"
2) Kapcsolat és command létrehozása
'Definiáljuk a kapcsolatot és az SQL-t
Dim Connection As NpgsqlConnection = New NpgsqlConnection(ConnBilder.ConnectionString)
Dim sql As String = "SELECT * FROM Teszt WHERE lower(szoveg) LIKE '%' || lower(@PARAM) || '%'"
'Igen a PostgreSQL ||-el konkatenál, illetve a Like megkülönböztet kis és nagybetűket is.
'Megnyitjuk a kapcsolatot
Connection.Open()
'Létrehozzuk az sqlcommandot, illetve a Paramétereket
Dim command As NpgsqlCommand = New NpgsqlCommand(sql, Connection)
command.Parameters.Add("@PARAM", NpgsqlTypes.NpgsqlDbType.Varchar)
command.Parameters("@PARAM").Value = Me.TbKeres.Text
3) Lefuttatjuk a lekérdezést, majd zárjuk a kapcsolatot.
'Elvégezzük a mûveletet és feltöltjük a táblát és lezárjuk a kapcsolatot.
Dim dt As DataTable = New DataTable()
Dim da As NpgsqlDataAdapter = New NpgsqlDataAdapter(command)
da.Fill(dt)
Me.GvTalalatok.DataSource = dt
Connection.Close()
Futtassuk és ámuljunk :) Elvben minden szöveg változásra lefut a lekérdezés. Esetleg annyit lehet még szépíteni, hogy a Form Load eseményébe is meghívjuk ezt az eljárást, és akkor az form betöltésekor is lefut a lekérdezés.
Remélem segítettem. :)