C# апликација за рад са SQL упитима

Желимо да направимо C# апликацију у којој корисник може да унесе SQL SELECT упит, потом кликне на дугме и на крају види резултат – редове и колоне овог упита. Ми ћемо, у ствари, допунити претходно урађен пример са компонентом datagridview у којој се уписују подаци из табеле Ucenici наше базе података Primer. Подсећам, DataGridView је веома моћна контрола која је способна да прикаже садржај табеле у DataSet објекту. DataSet објекат чува један или више Table објеката у меморији. Сваки Table објекат је матрица састављена од редова и колона и чува резултат једног SELECT упита. У овом примеру ћемо имати само један Table објекат у DataSet-у који ће чувати резултат SELECT упита уписаног у TextBox контролу.

DataGridView контролу ћемо искористити за приказ садржаја ове табеле.

Сваки пут када желите да задате SELECT упит бази података процедуре је иста. На следећем дијаграму је приказан редослед креирања објекта, њихове везе и кључна својства сваког од њих (објашњено у претходном тексту):

selectupit

Потребно је испоштовати редослед рада са објектима и као резултат последње – Fill методе добијамо попуњени DataSet објекат кога можемо приказати кориснику помоћу DataGridView или неке друге контроле.

Иако допуњавамо већ урађен пример, да би вама било јасније, цео поступак ћу обавити од почетка.

Кориснички интерфејс апликације је једноставан и њен крајњи изглед је приказан на следећој слици:

baza21

На иницијалну форму постављамо следеће контроле:

TextBox – поставите својство MultiLine на True, како би корисник могао да откуца SQL SELECT упит у више редова. У складу са овим поставите и својство ScrollBars на Vertical. Иницијално име контроле ћемо задржати – textBox1
Button – поставите својство Text на старт и такође оставите иницијално име контроле на button1
DataGridView – поставите је тако да заузима већи део форме. Такође желимо да контрола прати измене димензија форме што се постиже постављањем Anchor својства. Контролу треба привезати (Anchor) на све четири стране, чиме се аутоматски одржава исто растојање од ивица форме.

anchor

На крају наша форма треба да изгледа овако:

baza22

Кликом на дугме „старт“ се извршава све, од постављања конекције до везивања података на DataGridView контролу.

Урадите дупли клик на дугме и пре него што кренемо са писањем кода, згодно је (не и неопходно) додати једну using директиву како би себи скратили писање. На врху прозора за писање кода ћете уочити неколико постојећих using директива, а потребно је додати још једну:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb; // ову линију додајемо!

Враћамо се на button1_Click догађај и по реду како је приказано на претходном дијаграму пишемо код:

Конекција:

OleDbConnection Konekcija = new OleDbConnection();
Konekcija.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\baza1\primerBaza.mdb"; // овде уписујемо ConnectionString који смо раније забележили

Команда:

OleDbCommand Komanda = new OleDbCommand();
Komanda.Connection = Konekcija;
Komanda.CommandText =textBox1.Text;

Текст укуцан у контролу textBox1 користимо за CommandText својство команде, тако да то мора бити валидан SQL SELECT упит.

DataSet:

DataSet Ds = new DataSet();

Овде радимо само инстанцирање објекта Ds на основу DataSet класе.

DataAdapter:

OleDbDataAdapter Da = new OleDbDataAdapter();
Da.SelectCommand = Komanda;

Инстанцирање Da објекта на основу OleDbDataAdapter класе.

Пуњење DataSet-a:

Da.Fill(Ds);

Користимо Fill методу OleDbDataAdapter класе за „пуњење“ DataSet-а. Ове метода заправо покреће SelectCommand команду, која даље отвара конекцију и бази прослеђује упит. Резултат овог упита се прослеђује DataSet-у који прави једну или више табела.

Приказ садржаја прве табеле DataSet-а у DataGridView1 контроли:

DataGridView1.DataSource = Ds.Tables[0];

Својство DataSource, као што можете претпоставити из назива, показује који је извор података које треба приказати у контроли. У овом примеру, извор података је прва (и једина) табела у DataSet-у који има index 0 (Ds.Tables[0]).

Комплетан код за click догађај дугмета:

programskiKod

Време је да покренемо пример.

Када смо покренули пример у textBox1 треба укуцати следећи упит:

SELECT * FROM Ucenici

upit1

Кликните на дугме старт. Добијамо:

upit2

Можете, за вежбу, испробати дејство различитих SQL упита, а неке од њих смо дали у тексту Типови SQL упита (са овим урађеним упитом добијате СВЕ колоне у жељеној табели, па на основу тога можете припремити остале упите за вежбу).

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се /  Промени )

Google photo

Коментаришет користећи свој Google налог. Одјавите се /  Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се /  Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се /  Промени )

Повезивање са %s