10. marts 2006 - 13:52Der er
6 kommentarer og 1 løsning
Insert med autonumrering
Jeg har en Accessdatabase med en enkelt tabel. Inde i den tabel, er der: navn(string), alder(int) og id(autonumrering). Så sætter jeg VS2005 til at generere alle sql'er selv. Det funger også fint bortset fra INSERT. INSERT fungerer fint nok, hvis man selv indtaster et id-tal. Men det er jo ikke meningen, når det er et autonumreringsfelt. Hvis jeg holder feltet skjult under indtastningen (som det rigtig skal være), så får jeg en fejl. Noget med "ikke den rigtige variant". Hvad kan fejlen være?
well... den sql du har fået genereret er ikke iorden, da du tilsyneladende skal komme anstigende med et autogenereret id i forbindelse med en insert. kan du ikke sikre dig at feltet er en autogenereret nøgle - og så prøve at få genreret koden igen. mvh
Tja, jeg har prøvet med lidt forskellige sql-sætninger. Min tabel hedder "person" ig har felterne: "id", "navn" og "alder". "id" er primærnøgle. Jeg har prøvet disse forskellige udgaver af den "same" sql: INSERT INTO person(navn, alder, id) VALUES (?, ?,) INSERT INTO person(id, navn, alder) VALUES (,?, ?) INSERT INTO person(navn, alder) VALUES (?, ?) Alle giver fejlen:
"Der er en syntaksfejl i INSERT INTO-sætningen. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.OleDb.OleDbException: Der er en syntaksfejl i INSERT INTO-sætningen. "
Men jeg har lige fundet ud af, at man kan gå ned i Properties-vinduet, vælge "inser-query" og så er der nemlig et insert defaultvalue. Dette felt er tomt. Det nurde det jo også være, når databasefeltet er af typen autoincrement. Men kan det være, at man skal skrive en autoincrementsyntax her?
Ah...nu virker det vist. Jeg har prøvet med sætningen: INSERT INTO person(navn, alder) VALUES (?, ?)
og dette virker vist. Jeg mener bare, at jeg har prøvet med den før. Grunden til, at jeg prøver med den nu er, at jeg lige har fundet ud af, at man også kan ændre i sql'en igennem inserqueryfeltet i propertiesvinduet. Kan der være en exception, når man ændrer sqlsætningen gennem AccessDataSourcen?
Du skal huske at dit id felt i databasen skal være autonummering og med nøgle så burde "Insert Into Tabel (felt1, felt2) Values (value1, value2)" virke for dig ;o)
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.