Poslao: 27 Maj 2014 18:12
|
offline
- Pridružio: 28 Okt 2009
- Poruke: 212
- Gde živiš: Kanjiza
|
command.CommandText = "INSERT INTO Naruceno(Ime, Prezime, Adresa, Cena,Knjiga,E-mail) VALUES ('aa','aa','aa',22,'aa','aasd')";
command.ExecuteNonQuery();
Izbacuje mi problem ({"Syntax error in INSERT INTO statement."}) Znam sta mi kaze ali gde gresim . U bazi su sve kolone tipa text samo je cena number.
I imam jos jedno pitanje :
Da li moze da se u iskaz ubaci int varijabla? Ovako:
int cena = 100;
command.CommandText = "INSERT INTO Naruceno(Ime, Prezime, Adresa, Cena,Knjiga,E-mail) VALUES ('" + TextBox1.Text + "' , '" + TextBox2.Text + "', '" + TextBox3.Text "', cena, 'aa','aa' )";
U Bazi je cena stavljena kao int!Da li ce funkcionisati tako ?
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 27 Maj 2014 19:54
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Napisano: 27 Maj 2014 19:51
KecmaNedjo ::Da li moze da se u iskaz ubaci int varijabla? Ovako ... U Bazi je cena stavljena kao int!Da li ce funkcionisati tako ?Može, samo očitaj njenu tekstualnu vrednost (toString metodom). Naravno, odvoji je od postojećeg stringa i dodaj je konkatenacijom. Ovako nešto:
command.CommandText = "INSERT INTO Naruceno(Ime, Prezime, Adresa, Cena,Knjiga,E-mail) VALUES ('" + TextBox1.Text + "' , '" + TextBox2.Text + "', '" + TextBox3.Text "', " + cena.toString() + ", 'aa','aa' )";
Dopuna: 27 Maj 2014 19:54
KecmaNedjo ::Izbacuje mi problem ({"Syntax error in INSERT INTO statement."}) Znam sta mi kaze ali gde gresim . U bazi su sve kolone tipa text samo je cena number.Koji DBMS koristiš? Probaj da umesto jednostrukih navodnika koristiš dvostruke. Kod nekih DBMS-a se podrazumevaju jednostruki, dok neki koriste dvostruke navodnike za navođenje tekstualnih podataka. Dakle, ovako nešto:
command.CommandText = "INSERT INTO Naruceno(Ime, Prezime, Adresa, Cena,Knjiga,E-mail) VALUES (\"aa\",\"aa\",\"aa\",22,\"aa\",\"aasd\")"; U tom slučaju moraš da koristiš tzv. escape karakter \ ispred svakog znaka navodnika.
|
|
|
|
Poslao: 27 Maj 2014 22:07
|
offline
- Pridružio: 28 Okt 2009
- Poruke: 212
- Gde živiš: Kanjiza
|
A ja sam mislio da se mora uneti int vrednpst a ne string, jer je kolona cena postavljena na number(int) . Nzm koji DBMS koristim ni kako to mogu proveriti ali kod SELECTA radi sa jednostrukim (kad sam kucao kod where iskaza ) . Ali sam koristio reader naravno, mozda to pravi razliku ? Koristim Web developer 2010 express i access 2007 ja mislim (mozda 2010) , ako vam je to od pomoci . Probacu sutra sa tim navodnicima pa cemo videti sta ce biti
|
|
|
|
Poslao: 27 Maj 2014 22:23
|
offline
- vasa.93
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Napisano: 27 Maj 2014 22:21
KecmaNedjo ::A ja sam mislio da se mora uneti int vrednpst a ne string, jer je kolona cena postavljena na number(int) .Text komande je string, pa je zbog toga neophodno da vrednost int promenljive "ugradiš" u string koji dodeljuješ komandi. U slučaju koji si napisao, "cena" se posmatra kao i bilo koji drugi niz karaktera (obrati pažnju na to da se nalazi unutar navodnika), a ne kao lokalna promenljiva.
KecmaNedjo ::...Nzm koji DBMS koristim ni kako to mogu proveriti ... Koristim ... access 2007 ja mislim (mozda 2010) ...Izgleda da ipak znaš. Dakle, Microsoft Access je DBMS (DataBase Management System).
KecmaNedjo ::...kod SELECTA radi sa jednostrukim (kad sam kucao kod where iskaza ) . Ali sam koristio reader naravno, mozda to pravi razliku ?...Ok, nije do navodnika, Access takođe koristi jednostruke navodnike.
Svakako, sa stanoviša SQL-a, ja ne vidim ovde grešku. No, gledam sada neke projekte i vidim da kod Access-a i podatke tipa NUMBER stavljaju pod navodnicima (jednostrukim). Dakle, ovako:
command.CommandText = "INSERT INTO Naruceno(Ime, Prezime, Adresa, Cena,Knjiga,E-mail) VALUES ('aa','aa','aa','22','aa','aasd')";
command.ExecuteNonQuery();
Probaj ovako, pa javi da li prolazi.
Dopuna: 27 Maj 2014 22:23
Evo recimo jednog primera: http://www.mycity.rs/NET/9-C-Osnovni-rad-sa-formom-listom-i-bazom-podataka.html
Pogledaj oblasti 3 i 4, i videćeš da i podaci tipa NUMBER stoje pod navodnicima.
|
|
|
|
Poslao: 28 Maj 2014 11:53
|
offline
- Pridružio: 28 Okt 2009
- Poruke: 212
- Gde živiš: Kanjiza
|
Napisano: 28 Maj 2014 11:06
A primetio sam da u prvom primeru u klasi Forumas da je varijabla BrojForumasa int. A u Insertu je upisuje kao '" + fr.BrojForumasa + " ' . Sto znaci da int ne mora da se konvertuje u string ? Jer pozivanjem svojstva (objekta fr) BrojForumasa vraca int vrednost .
Dopuna: 28 Maj 2014 11:53
Probao sam sa navodnicima i ne ide.
Mozda je problem u ostatku koda a da ne primetim .
Evo citave funkcije:
protected void Button1_Click(object sender, EventArgs e)
{
MyConnection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Djone\blok\App_Data\Knjige.accdb;Persist Security Info=False;";
MyConnection.Open();
command.Connection = MyConnection;
string pisac = DropDownList1.SelectedValue; // ovde uzimam vrednosti iz dropdownlista
string delo = DropDownList2.SelectedValue;
string cn;//cena u stringu
int cena;
command.CommandText = "SELECT Cena FROM Knjige WHERE Autor = '" + pisac + "' AND NazivDela ='"+delo+"'"; // naredba za uzimanje Cene
reader = command.ExecuteReader();
while (reader.Read())
{
cn = reader["Cena"].ToString(); // ucitavamo cenu
cena = Convert.ToInt32(cn);
}
MyConnection.Close();
MyConnection.Open();
command.CommandText = "INSERT INTO Naruceno(Ime, Prezime, Adresa, Cena,Knjiga,E-mail) VALUES ('aa','aa','aa','22','aa','aasd')"; // ovo je deo koji ne valja!
command.ExecuteNonQuery(); //Izbacuje problem!
MyConnection.Close();
}
|
|
|
|
|
Poslao: 28 Maj 2014 14:06
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Probaj da umesto:
MyConnection.Close();
MyConnection.Open();
uradiš:
reader.Close();
|
|
|
|
Poslao: 28 Maj 2014 22:01
|
offline
- Pridružio: 28 Okt 2009
- Poruke: 212
- Gde živiš: Kanjiza
|
Probacu , moguce da je to . Jer mi je prvo izbacivao gresku da se konekcija koristi , pa sam morao taj close . Kad pokusam javljam rezultate
|
|
|
|
Poslao: 28 Maj 2014 22:17
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
vasa.93 ::Svakako, sa stanoviša SQL-a, ja ne vidim ovde grešku.
Greska je ocigledna i velika k'o vrata
Citat:command.CommandText = "INSERT INTO Naruceno(Ime, Prezime, Adresa, Cena,Knjiga,E-mail) VALUES ('aa','aa','aa','22','aa','aasd')"; // ovo je deo koji ne valja!
U SQL-u, kao i u svim ostalim jezicima, - znaci oduzimanje i ne moze se koristiti u nazivu kolone/promenljive/klase/metode itd. Medjutim, ukoliko dodas ` (na tastaturi levo od 1) "okolo" E-mail, radice.
command.CommandText = "INSERT INTO Naruceno(Ime, Prezime, Adresa, Cena,Knjiga,`E-mail`) VALUES ('aa','aa','aa','22','aa','aasd')"; // ovako radi kao sat
|
|
|
|
|