1. Šta su parametri u komandnom objektu?

Kada izvršavamo SQL upite unutar C# koda, preporučljivo je koristiti parametre umesto direktnog umetanja vrednosti u SQL string. Ovo je važno jer:

  • Sprečava SQL injekcije (sigurnosni problem).

  • Omogućava rad sa različitim podacima bez menjanja upita.

  • Poboljšava performanse aplikacije.

SqlCommand klasa omogućava dodavanje parametara pomoću metode Parameters.AddWithValue().


2. Primeri korišćenja parametara u SQL upitima

Primer 1: Ubacivanje podataka u bazu koristeći parametre

Nastavljemo da radimo u vizualnoj aplikaciji iz prethodnohg časa.

Dodati još jedno dugme kojim će da se u bazu unese učenik Marko Marković, sa rednim brojem 200.

U nastavku je deo programskog koda koji je ključan za ovaj primer:

         konekcija.Open();
                
         string upit = "INSERT INTO Ucenici (ID, Ime, Prezime) VALUES (@Id, @Ime, @Prezime)";
         SqlCommand komanda = new SqlCommand(upit, konekcija);
komanda.Parameters.AddWithValue("@Id", 200); komanda.Parameters.AddWithValue("@Ime", "Marko"); komanda.Parameters.AddWithValue("@Prezime", "Marković"); int rezultat = komanda.ExecuteNonQuery(); MessageBox.Show("Broj redova koji su dodati u tabelu Ucenici je " + rezultat ");
private void button3_Click(object sender, EventArgs e)
{
string connectionString = "Server=localhost;Database=Skola;User Id=sa;Password=lozinka;";

using (SqlConnection konekcija = new SqlConnection(connectionString))
{
try
{
konekcija.Open();

string upit = "INSERT INTO Ucenici (ID, Ime, Prezime) VALUES (@Id, @Ime, @Prezime)";
SqlCommand komanda = new SqlCommand(upit, konekcija);
komanda.Parameters.AddWithValue("@Id", 200);
komanda.Parameters.AddWithValue("@Ime", "Marko");
komanda.Parameters.AddWithValue("@Prezime", "Marković");

int rezultat = komanda.ExecuteNonQuery();
MessageBox.Show("Broj redova koji su dodati u tabelu Ucenici je " + rezultat );

}
catch (Exception ex)
{
MessageBox.Show("Greška: " + ex.Message);
}
}
}

Napomene: Pošto u našem primeru ID nije identity (autoincrement)  potrebno je UNETI i ID za svakog od učenika !
  Treba pokušati koristiti različite načine pisanja konekcionog stringa. Ako se koristi user id i lozinka, to se dobija od predmetnog nastavnika...

Zadatak:

Na formu dodati komponente tipa TextBox da bi korisnik mogao da dodaje učenike i dugme na koje se klikne za unos.

Rešenje:

  • prvo dodati labele, textBox komponente i dugme na kojem piše UNESI
  • dvoklikom na dugme kreirati metodu
  • koristiti parametre za unos
  • parametrima se dodeljuje uneseni sadržaj iz textBox-ova
  • ako je u pitanju broj, treba ga konvertovati, jer se iz textBox-a dobija samo string!
private void btnUnesi_Click(object sender, EventArgs e)
{
string connectionString = "Server=localhost;Database=Skola;User Id=sa;Password=lozinka;";

using (SqlConnection konekcija = new SqlConnection(connectionString))
{
try
{
string unesenoIme = textBoxIme.Text;
string unesenoPrezime = textBoxPrezime.Text;
int uneseniId = Convert.ToInt32(textBoxID.Text);

konekcija.Open();

string upit = "INSERT INTO Ucenici (ID, Ime, Prezime) VALUES (@Id, @Ime, @Prezime)";
SqlCommand komanda = new SqlCommand(upit, konekcija);

komanda.Parameters.AddWithValue("@Id", uneseniId);
komanda.Parameters.AddWithValue("@Ime", unesenoIme);
komanda.Parameters.AddWithValue("@Prezime", unesenoPrezime);

int rezultat = komanda.ExecuteNonQuery();
MessageBox.Show("Uspešno uneti podaci");

}
catch (Exception ex)
{
MessageBox.Show("Greška: " + ex.Message);
}
}
}

Primer 2. Korišćenje parametara za ažuriranje podataka

  string upit = "UPDATE Ucenici SET Prezime = @Prezime, Ime = @Ime WHERE ID = @Id";
  SqlCommand komanda = new SqlCommand(upit, konekcija);
  komanda.Parameters.AddWithValue("@Id", 1);
  komanda.Parameters.AddWithValue("@Ime", "Marko");
  komanda.Parameters.AddWithValue("@Prezime", "Petrović");
  komanda.ExecuteNonQuery();

Primer 3. Korišćenje parametara za brisanje podataka

  string upit = "DELETE FROM Ucenici WHERE Ime = @Ime";
  SqlCommand komanda = new SqlCommand(upit, konekcija);
  komanda.Parameters.AddWithValue("@Ime", "Marko");
  komanda.ExecuteNonQuery(); *

Napomene:

  •   dodati System.Data.SqlClient biblioteke.

3. Zadatak:

(2) Nastaviti  WinForms aplikaciju sa prethodnog časa

Postaviti ispod toga textBox-ove za unos podataka i dugme za unos .... Klikom na dugme se unose podaci koje je korisnik uneo

      Napomena: Pošto u našem primeru ID nije identity (autoincrement)  potrebno je UNETI i ID za svakog od učenika !

(3) Dodati dugmiće IZMENI i OBRIŠI:

  • Klikom na dugme IZMENI treba da se izmeni ime ili prezime učenika sa zadatim ID
  • Klikom na dugme OBRIŠI treba da se obriše učenik sa zadatim ID

...

Last modified: Thursday, 11 December 2025, 2:46 AM