Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SQLCE - Query problem

[es] :: .NET :: .NET Desktop razvoj :: SQLCE - Query problem

[ Pregleda: 1892 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
109.175.58.*



+13 Profil

icon SQLCE - Query problem09.08.2011. u 11:37 - pre 160 meseci
Zadatak je, pronaci istu string vrijednost u bazi(barcode), te uraditi update int(stanje) polja.

Baza je



Uploaded with ImageShack.us

metoda koja to radi je:

Code:

public void AzurirajKolicinu(string barcode, int kolicina)
        {
           
                SqlCeConnection con = new SqlCeConnection(@"Data Source = |DataDirectory|\intercom.sdf");

                con.Open();

                SqlCeCommand com = new SqlCeCommand("update prodaja set stanje =" + kolicina.ToString() + " WHERE barcode= " + barcode, con);
                com.Parameters.AddWithValue("@stanje", kolicina);

                com.ExecuteNonQuery();

                con.Close();



Znaci nadji barkod iz baze, i azuriraj njegovo int kolicina polje sa novom vrijednoscu.

Ovo radi ako imam barkodove koji su >= 14 karaktera (primjer: 1234567890123).


Ovo ne radi ako imam barkodove koji su <= od 13 karaktera (123456789012)
Greska koju dobijem je:

exception.message
Code:

---------------------------

---------------------------
Expression evaluation caused an overflow. [ Name of function (if known) =  ]
---------------------------
OK   
---------------------------



Malo detaljnije:
MessageBox.Show(a.InnerException + "\n" + a.Source + "\n" + a.StackTrace + "\n" + a.TargetSite);
Code:

SQL Server Compact ADO.NET Data Provider
   at System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr)
   at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr& pCursor, Boolean& isBaseTableCursor)
   at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand(CommandBehavior behavior, String method, resultSetOptions options)
   at System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery()
   at POSkasa.konekcija.AzurirajKolicinu(String barcode, Int32 kolicina) in C: 


Cini mi se da negdje dolazi do kolizije tipa podataka, ali gdje?






 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12868



+4787 Profil

icon Re: SQLCE - Query problem09.08.2011. u 12:02 - pre 160 meseci
OK, ovo verovatno nema veze sa tvojim problemom (nista mi u vezi toga ne pada na pamet trenutno), ali zasto dodajes parametar ako ga ne koristis nego hardcodiras kolicinu u query?
 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
109.175.58.*



+13 Profil

icon Re: SQLCE - Query problem09.08.2011. u 12:09 - pre 160 meseci
To su bili pokusaji u nadi da nadjem problem...

:)
 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
109.175.58.*



+13 Profil

icon Re: SQLCE - Query problem09.08.2011. u 13:27 - pre 160 meseci
Ovo nije normalno, cini mi se da jedan od fajlova koji sam koristio za testiranje na neki nacin zezne bazu.

Jos testiram...
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
*.finsoft.rs.

ICQ: 20785904


+4 Profil

icon Re: SQLCE - Query problem09.08.2011. u 16:31 - pre 160 meseci
ako vec rucno pakujes naredbu, taj barcode bi valjda trebalo da ide kao: WHERE barcode= N'" + barcode+"'"

ali i barcode bi trebalo kao parametar prosledjujes:

SqlCeCommand com = new SqlCeCommand("update prodaja set stanje =@kolicina WHERE barcode= @barcode", con);
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.evj-kabel.net.



+14 Profil

icon Re: SQLCE - Query problem09.08.2011. u 19:00 - pre 160 meseci
Nemas navodnike kod barcode pa onda SQL pretvara taj string u int i onda overflovuje kad je preveliki. Koristi parametre i nece te boleti glava
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
*.dynamic.telemach.ba.



+13 Profil

icon Re: SQLCE - Query problem09.08.2011. u 19:52 - pre 160 meseci
Citat:
Boris B.: Nemas navodnike kod barcode pa onda SQL pretvara taj string u int i onda overflovuje kad je preveliki. Koristi parametre i nece te boleti glava :)


Da to je bio razlog. Ali to ne objasnjava razlog zasto mi sa manjim brojevima radi overflow...

kasnije sam provalio sta je u pitanju... Fajl iz kojeg parsiram vrijednosti... jedno prokleto polje je bilo pogresno uneseno!!!
A cijelo jutro testiram sa tim fajlom. Kako sam ga sa zadovoljstvom OBRISAO!!!

Sad imam handle za sve uslove, i nema vise problema.

PS
Moram poraditi na querijima... nije mi jaca strana :)


 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
*.dynamic.telemach.ba.



+13 Profil

icon Re: SQLCE - Query problem10.08.2011. u 20:10 - pre 160 meseci
I na kraju evo koda koji napokon radi kako treba (hope) :)

Code:

SqlCeConnection con = new SqlCeConnection(@"Data Source = |DataDirectory|\intercom.sdf");
                con.Open();
                SqlCeCommand com = new SqlCeCommand("update prodaja set stanje = @kolicina WHERE barcode= @barcode", con);
                com.Parameters.AddWithValue("@kolicina", kolicina);
                com.Parameters.AddWithValue("@barcode", barcode);
                com.ExecuteNonQuery();
                con.Close();




 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: SQLCE - Query problem

[ Pregleda: 1892 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.