Avatar billede glenn007 Nybegynder
20. juli 2009 - 13:15 Der er 11 kommentarer og
1 løsning

kan ikke convertere int

gør således for at finde den sidste rækker i en database.


Com.CommandText = "SELECT MAX(id) FROM history";
retsdata = Convert.ToInt32(Com.ExecuteScalar());


den kommer med fejlen at den ikke kan konverter fra DBnull til INT.  men id ( som er outo increment ) er jo en INT ... så forstår ikke den fejler.

nogen der sidder med en ide...
Avatar billede j3ppah Novice
20. juli 2009 - 13:24 #1
DBnull ??? Lyder det ikke lidt som om den ikke får hentet noget med din query... Prøv lige at fyrer queryen af uden for dit program, altså bare som nogmal udtræk på db'en, lige for at checke om du får et ordenligt output.
Avatar billede bvli Praktikant
20. juli 2009 - 13:41 #2
Ellers refektorér:

object result = Com.ExecuteScalar();
int retsdata = (result == null || result == DBNull.Value) ? 0 : Convert.ToInt(result);
Avatar billede bitmatic Nybegynder
20. juli 2009 - 14:25 #3
Burde din query ikke være noget i retning af:

SELECT id FROM history WHERE id=MAX(id)
Avatar billede bitmatic Nybegynder
20. juli 2009 - 14:27 #4
eller rettere:

SELECT * FROM history WHERE id=MAX(id)
Avatar billede j3ppah Novice
20. juli 2009 - 14:30 #5
Må sku nok også erkende jeg heller ikke helt forstå din query... altså... er det fordi du prøver at bruge (id) som en int du hiver ud fra noget tidligere i programmet eller lignende?... For så burde det være.

Der er i hvertfald et eller andet der ikke stemmer, men du må lige sige når du har fået noget output fra queryen.
Avatar billede glenn007 Nybegynder
20. juli 2009 - 14:32 #6
ok har nu afviklet min kode uden for programmet. og det er netop fordi den tilsynladende ikke returnerede en værdi ( kun null )  det viste sig min database var blevet tømt ved en fejl.

så snart jeg smed i linie i den virkede det igen.
Avatar billede glenn007 Nybegynder
20. juli 2009 - 14:34 #7
j3ppah

jeg bruger min query til at hente sidste indtasede datalinie .. den bruges senere til at udvælge hvilken linie jeg skal updatere

jeg gemmer simpelthen variablen for at slippe for at slå op i databasen senere.



jppah


smider du et svar... du ramte plet
Avatar billede glenn007 Nybegynder
20. juli 2009 - 14:36 #8
bitmatic,  din løsning vil den vist ikek acceptere i mysql...  men jeg er ikke helt sikker, syntes bare lige den version engang gav mig en fin kommentar om jeg brugte group statements forkert...  :)
Avatar billede j3ppah Novice
20. juli 2009 - 14:36 #9
Hehe okay :)... Jamen held og lykke med resten af programmet, du må endelig sige hvis der bliver flere problemer ;)
Avatar billede glenn007 Nybegynder
20. juli 2009 - 14:43 #10
jtak,ja det skal jeg gøre... der er vel også en slags reklamations ret på gratis experthjælp  *GGG*
Avatar billede j3ppah Novice
20. juli 2009 - 14:48 #11
:D
Avatar billede arne_v Ekspert
20. juli 2009 - 15:21 #12
SELECT MAX(id) duer ikke med flere samtidige brugere.

Fordi du kan faa en raekke indsaet af en anden bruger.

SELECT @@IDENTITY
SELECT SCOPE_IDENTITY()
SELECT LAST_INSERT_ID()

for henholdsvis Access, SQLServer og MySQL er bedre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester