Valjda upit?
UPDATE [Books] SET Quantity = (Quantity - 1) WHERE BookId = @Id
Naravno prvo provjeri da li te knjige ima na stanju, tj da li je polje quantity veće od 0.
Valjda upit?
UPDATE [Books] SET Quantity = (Quantity - 1) WHERE BookId = @Id
Naravno prvo provjeri da li te knjige ima na stanju, tj da li je polje quantity veće od 0.
Valjda upit?
UPDATE [Books] SET Quantity = (Quantity - 1) WHERE BookId = @Id
Naravno prvo provjeri da li te knjige ima na stanju, tj da li je polje quantity veće od 0.
Ovaj mi upit radi kada unesem u Sql , ali u c# mi ne radi, kako da povezem da mi ubaci u Quantity.
string Query2 = "UPDATE [Books] SET Qunatity = (Quantity-1) WHERE Book_ID=@Book_ID";
SqlCommand sqlCom2 = new SqlCommand(Query2,sqlConn);
sqlCom.Parameters.AddWithValue("@Book_ID", Int32.Parse(book_id.Text));
sqlCom2.Parameters.AddWithValue("@Quantity",*);
Šta trebam dodati jos kao argument umjesto ovog boldanog pošto ja nemam tex box u ovom prozoru da dodam quantity, jer bi mi se on na klik posudba trebao sam dekrementiarati?
Šta trebam dodati jos kao argument umjesto ovog boldanog pošto ja nemam tex box u ovom prozoru da dodam quantity, jer bi mi se on na klik posudba trebao sam dekrementiarati?
Ništa. To je dekrementiranje.
Da ali izbaciva mi error: No overload for method 'AddWithValue' takes 1 arguments
try
{
sqlConn.Open();
string Query = "INSERT INTO Library(Person_ID, Book_ID, StartDate, EndDate) VALUES (@Person_ID, @Book_ID, @StartDate, @EndDate)";
string Query2 = "UPDATE [Books] SET Qunatity = (Quantity-1) WHERE Book_ID=@Book_ID";
SqlCommand sqlCom2 = new SqlCommand(Query2,sqlConn);
SqlCommand sqlCom = new SqlCommand(Query,sqlConn);
sqlCom.Parameters.AddWithValue("@Person_ID", Int32.Parse(person_id.Text));
sqlCom.Parameters.AddWithValue("@Book_ID", Int32.Parse(book_id.Text));
sqlCom.Parameters.AddWithValue("@StartDate", start_date.Text);
sqlCom.Parameters.AddWithValue("@EndDate", end_date.Text);
sqlCom2.Parameters.AddWithValue("@Quantity");
sqlCom.ExecuteNonQuery();
sqlCom2.ExecuteNonQuery();
MessageBox.Show("Posuđeno");
sqlConn.Close();
}
Da ali izbaciva mi error: No overload for method 'AddWithValue' takes 1 arguments
Ali ti ta metoda i ne treba. Nema parametra Quantity, jedini parametar u tom upitu je primarni ključ zapisa.
Hvala, radi mi :)
Ovo što si rekao da provjerim ima li knjiga tj da broj knjiga ne smije biti manji od nule to sam napravio preko constraina da bude quantity > (-1)
Hvala, radi mi :)
Ovo što si rekao da provjerim ima li knjiga tj da broj knjiga ne smije biti manji od nule to sam napravio preko constraina da bude quantity > (-1)
Mislim da ti quantitiy mora biti veće od 0 pa bi ti uvjet trebao glasiti quantity > (0).
Hvala, radi mi :)
Ovo što si rekao da provjerim ima li knjiga tj da broj knjiga ne smije biti manji od nule to sam napravio preko constraina da bude quantity > (-1)
Mislim da ti quantitiy mora biti veće od 0 pa bi ti uvjet trebao glasiti quantity > (0).
Da ali ako tako ostavim onda mi pise da ima quantity 1 tj. da tu jednu knjigu ne mogu uzeti iz knjiznice, a ako stavim >-1 kada posudim zadnju knjigu pise mi nula te kada iduci put sezlim posudii javi mi se prozor da je postavljen constraint
Ovo što si rekao da provjerim ima li knjiga tj da broj knjiga ne smije biti manji od nule to sam napravio preko constraina da bude quantity > (-1)
A šta ako ti je stanje 0, uslov će biti ispunjen i količina će se dekrementirati, pa ćeš imati stanje -1.
Sad imam problem radi mi ovo s constraintom , ali ako stavim da osoba 2 posuđuje knjigu 6 i ako je broj knjiga 0 javi mi se poruka za constraint kada kliknem te mi se pri tome izvrši i posudba, kako da napravim nešto tipa if ako imam Quantity =0 da mi iskoci prozor nije omogućena posudba te da mi se posudba dalje ne izvršava.
try
{
sqlConn.Open();
string Query = "INSERT INTO Library(Person_ID, Book_ID, StartDate, EndDate) VALUES (@Person_ID, @Book_ID, @StartDate, @EndDate)";
string Query2 = "UPDATE Books SET Quantity = (Quantity-1) WHERE Book_ID='" + this.book_id.Text + "'";
SqlCommand sqlCom2 = new SqlCommand(Query2,sqlConn);
SqlCommand sqlCom = new SqlCommand(Query,sqlConn);
sqlCom.Parameters.AddWithValue("@Person_ID", Int32.Parse(person_id.Text));
sqlCom.Parameters.AddWithValue("@Book_ID", Int32.Parse(book_id.Text));
sqlCom.Parameters.AddWithValue("@StartDate", start_date.Text);
sqlCom.Parameters.AddWithValue("@EndDate", end_date.Text);
sqlCom2.Parameters.AddWithValue("@Quantity", Int32.Parse(book_id.Text));
sqlCom.ExecuteNonQuery();
sqlCom2.ExecuteNonQuery();
MessageBox.Show("Posuđeno");
sqlConn.Close();
}
SELECT Quantity FROM Books WHERE BookId = @Id
Vrijednost koju ti vrati provjeri.
if(stanje>0)
{
//izvrsi posudbu
}
else
{
MessageBox("Trenutno te knjige nema na stanju!");
}
Znaci pod ovim //izvrsi posudbu stavljam ovo svoje pod try {}, stanje mi je varijabla u koju ću spremati Quantity kako cu ga dovestit do te varijable?
Znaci pod ovim //izvrsi posudbu stavljam ovo svoje pod try {}, stanje mi je varijabla u koju ću spremati Quantity kako cu ga dovestit do te varijable?
U izvrši posudbu smanjuješ (dekrementiraš) količinu i ako je još nešto potrebno.
Možeš preko SqlDataReader klase. Npr.
var con = new SqlConnection(cstring);
var com = new SqlCommand("SELECT Quantity FROM Books WHERE BookId = @Id", con);
//popuni id parametar
var reader = com.ExecuteReader();
reader.Read(); //stavi ili ovako ili u while-petlju, zavisi od upita
var quantity = reader.GetInt32(0); //0 je index, možeš i naziv polja, ako se ne varam
Javlja mi error: An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll
Additional information: ExecuteReader requires an open and available Connection. The connection's current state is closed.
private void btPosudba_Click(object sender, RoutedEventArgs e)
{
string dBConnection = @"Data Source=M4CHIN3-PC\SQLEXPRESS;Initial Catalog=Library;Integrated Security=True;";
SqlConnection sqlConn = new SqlConnection(dBConnection);
var con = new SqlConnection(dBConnection);
var com = new SqlCommand("SELECT Quantity FROM Books WHERE BookId = '" + this.book_id.Text + "'", con);
//popuni id parametar
var reader = com.ExecuteReader();
reader.Read(); //stavi ili ovako ili u while-petlju, zavisi od upita
var quantity = reader.GetInt32(2); //0 je index, možeš i naziv polja, ako se ne varam
if (quantity > 0)
{
try
{
sqlConn.Open();
string Query = "INSERT INTO Library(Person_ID, Book_ID, StartDate, EndDate) VALUES (@Person_ID, @Book_ID, @StartDate, @EndDate)";
string Query2 = "UPDATE Books SET Quantity = (Quantity-1) WHERE Book_ID='" + this.book_id.Text + "'";
Moja greška. Prije linije gdje deklarišeš komandu stavi
con.Open();
Prepravio sam izbacilo mi je jos error nisam primjetio da si ti ostavio BookId umjesto moga Book_ID-a te mi sada radi kako treba, hvala.