Pomoc oko Iskaza INSERT INTO

1

Pomoc oko Iskaza INSERT INTO

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.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14370
  • 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.



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 Smile . Probacu sutra sa tim navodnicima pa cemo videti sta ce biti Smile

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14370
  • 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š. Smile 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. Very Happy

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.

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();     }

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14370
  • Gde živiš: Niš

KecmaNedjo ::Sto znaci da int ne mora da se konvertuje u string ? Jer pozivanjem svojstva (objekta fr) BrojForumasa vraca int vrednost .E pa sad. Very Happy Nisam nešto vešt sa C# (ovo je C#, jel da? Very Happy), ali verujem da se metoda toString poziva implicitno onda kada se ne navede, obzirom da se vrši konkatenacija.

Sve u svemu, nisam pametan šta ne valja. Very Happy

offline
  • 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();

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 Smile

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3560
  • 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 Wink

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

offline
  • Pridružio: 28 Okt 2009
  • Poruke: 212
  • Gde živiš: Kanjiza

Napisano: 29 Maj 2014 10:57

E-mail sam promenio u email i opet nije radilo . Na kraju se ispostavilo da je bio problem negde u bazi. ponovo sam napravio tabelu i sad radi Smile Ne znam sta je bilo. pregledavao sam sve je bilo ispravno (barem ja nista nisam uocio) . Hvala svima na pomoci Smile
I da , vrednost inta putem varijable ide isto kao sa stringom putem varijable Smile
Ako bude jos nekih problema pisem.
Hvala . Smile

Dopuna: 02 Jun 2014 15:22

Imam pitanje opet. Koristim Grid view za prikaz podataka iz baze. Podesio sam Access data source uz pomoc wizarda da mi prikazuhe sve podatke. Kako mogu uz pomoc C# da promenim Select komndu koju sam podesio u wizard-u? .
Hocu da napravim u zavsnosti od izabrane stavke u dropDownListi prikazuje podatke i-u Gridview-u. Pokusavao sam nesto ali nisam uspeo.

Ko je trenutno na forumu
 

Ukupno su 698 korisnika na forumu :: 31 registrovanih, 5 sakrivenih i 662 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., amaterSRB, awathorn, Bane san, blackbeast, Boris902, burekbrigada, Cranium, darkangel, DJORDJE-NO-1, flash12, goxsys, Krusarac, lojola, M74AB3, MikeHammer, minmatar34957, Miskohd, nebojsag, ostoja, ozzy, Regrut Boskica, ruseskij, shone34, Toni, Viceroy2, VJ, Vlada1389, vlasor, vlvl, Zerajic