Command objekat dozvoljava direktan pristup podacima u bazi u konektovanom okruženju. Ovaj objekat sadrži referencu na SQL komandu ili uskladištenu proceduru koje se mogu izvršavati direktno. Objekat Command implementira IDbCommand interfejs.Ako se kao snabdevač podataka izabere SQL Server .NET snabdevač onda se odgovarajući komandni objekat dobija instanciranjem klase SqlCommand. Ako se kao snabdevač podataka odabere OLE DB.NET snabdevač podataka onda se komandni objekat dobija instanciranjem klase OleDbCommand. Koristeći odgovarajući Comand objekat moguće je izvršavati Select, Insert, Update i Delete naredbe nad elementima baze podataka.
Svojstvo CommandText uključuje tekst SQL komande ili naziv uskladištene procedure koje treba izvršiti. Svojstvo CommandType specificira o kakvom se tipu komande radi tj. da li je to Text odnosno napisana SQL komanda ili je to StoredProcedure odnosno uskladištena procedura. Svojstvo Connection ukazaje na Connection objekat koji se koristi za komuniciranje sa bazom podataka. Svaki komandni objekat može imati nula ili više parametara što se specificira svojstvom Parameters
Metoda ExecuteScalar izvršava komandu koja vraća skalarnu vrednost. Metoda ExecuteReader izvršava komandu koja vraća skup zapisa iz baze. Metoda ExecuteNonQuery izvršava komandu koja ažurira bazu podataka ili menja strukturu baze podataka. Ovde se pod ažuriranjem podrazumeva i ubacivanje i brisanje podataka iz baze.
SqlCommand konstruktor - I
U nastavku je prikazano instanciranje SqlComand objekta korišćenjem podrazumevanog i jednoargumentnog konstruktora. Kada se za kreiranje komandnog objekta koristi podrazumevani konstruktor, tada se mora specificirati svojstvo CommandText koje određuje komandu koju će komandni objekat predstavljati i svojstvo Connection koje specificira odgovarajući konekcioni objekat kojim sepristupa bazi podataka. Svojstvo CommandType je Text što znači da se radi o SQL naredbi a ne o proceduri. Ako se prilikom instanciranja objekta Command specificira text komande koji se prosleđuje kao string konstruktoru tada je potrebno samo specificirati odgovarajući Connection objekat pomoću koga se uspostavlja konekcija.
SqlCommand myCommand = new SqlCommand();
string myConnectString = "Integrated Security=SSPI;database=northwind;server=mySQLServer";
myCommand.CommandText = "SELECT * FROM Categories ORDER BY CategoryID";
myCommand.Connection = new SqlConnection(myConnectString);
myCommand.CommandType = CommandType.Text;string mySelectQuery = "SELECT * FROM Categories ORDER BY CategoryID";
SqlCommand myCommand = new SqlCommand(mySelectQuery);
myCommand.Connection = new SqlConnection(myConnectString);
myCommand.CommandType = CommandType.Text;
SqlCommand konstruktor - II
SqlCommand objekat se može instancirati korišćenjem dvoargumentnog konstruktora. Prvi parametar konstruktora predstavlja tekst sql komande ili naziv procedure sa kojom se radi. Drugi parametar je odgovarajući SqlConnection objekat pomoću koga se vrši konekcija na bazu podataka.
string mySelectQuery="SELECT * FROM Categories ORDER BY CategoryID";
string myConnectString = "Integrated Security=SSPI;database=northwind;server=mySQLServer";
SqlConnection myConnection = new SqlConnection(myConnectString);
SqlCommand myCommand = new SqlCommand(mySelectQuery,myConnection);
myCommand.CommandType = CommandType.Text;
Izvršavanje komande koja vraća jednu vrednost
Najpre se definiše konekcioni string koji služi za definisanje SqlConnection objekta i string označen sa SQL koji predstavlja tekst SQL komande koju treba izvršiti nad datim izvorom podataka. Zatim se instancira SqlCommand objekat tako što se poziva konstruktor koji ima dva parametra i prosleđuju mu se tekst SQL komande i odgovarajući SqlConnection objekat. Najpre se otvara konekcija poyivom Open metode. Poziva se metoda ExecuteScalar SqlCommand objekta koja vraća odgovarajuću sklarnu vrednost boksovanu u object tip. Zato se mora izvršiti anboksovanje tj. kastovanje tipa object u tip int. Na kraju se konekcija zatvara.
string connectionString = "Data Source=localhost;" +
"Initial Catalog=Northwind;Integrated Security=SSPI";
string SQL = "SELECT COUNT(*) FROM Orders WHERE " +
"OrderDate >= '1996-01-01' AND OrderDate < '1997-01-01'";
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(SQL, con);// Izvrsavanje komandi
con.Open();
int result = (int)cmd.ExecuteScalar();
con.Close();// Prikazi rezultat operacije
Console.WriteLine(result.ToString() + " vrsta u 1996");
Console.ReadLine();
Ažuriranje baze podataka
Za izvršavanje Insert, Update, Delete komandi koristi se ExecuteNonQuery metoda SqlCommand objekta. Ova metoda vraća celobrojnu vrednost koja predstavlja broj vrsta u tabelama baze podataka na koje je ažuriranje uticalo.Procedura kreiranja odgovarajuće konekcije i komandnog objekta je ista kao i u prethodnom nastavku. To se odnosi i na otvaranje i zatvaranje konekcije.
string connectionString = "Data Source=localhost;" +
"Initial Catalog=Northwind;Integrated Security=SSPI";
string SQL = "UPDATE Categories SET CategoryName='Beverages'"+"WHERE CategoryID=1";
// Kreiranje konekcije i objekta command
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(SQL, con);// Izvrsi komandu
con.Open();
int rowsAffected = cmd.ExecuteNonQuery(); // INSERT, UPDATE, DELETE
con.Close();// Prikazi rezultat komende
Console.WriteLine(rowsAffected.ToString() + " vrsta promenjeno");
Console.ReadLine();