22. februar 2011 - 12:32Der er
9 kommentarer og 1 løsning
Hvordan commit'er jeg updates til en database
Hej
Jeg har sat en lille form-applikation op der udfører nogle simple queries på en Access-database. Alt der henter data virker fint. Jeg har så også tilføjet en update-query. Men når jeg lukker Visual C# Express og åbner det igen, er alle mine ændringer forsvundet. Det er som om den opretter en kopi af databasen som jeg arbejder i mens applikationen kører og når jeg så lukker programmet er den væk. Hvordan kan dette være? Og hvordan forhindrer jeg det?
Du har verificeret din update-query kører, og hvis den gør, at evt kriterier er opfyldt, og at data så vitterligt er opdateret, altså inden du lukker ned?
Altså, jeg bruger jo VSE som interface til det hele. Jeg får ingen fejlmeldinger. Men kan godt se at tabellerne i databasen ikke er opdateret, men debugger jeg igen, så er dataene rettet. Det er først når jeg lukker programmet og åbner det igen. Så har den lavet en rollback til de gamle data.
Jeg forestillede mig heller ikke at den var intelligent :) - tværtimod. Tænkte mere det kunne være den måde VSE håndterer det hele på. Så den måske laver en kopi af databasen man arbejder på sålænge man debugger og den slettes når VSE lukkes ned.
Jeg har prøvet at tage .exe filen og de andre filer den opretter i debug og kopiere ud i et andet bibliotek, inkl. databasen. Og ganske rigtigt når det ligger der, så er opdateringerne i databasen permanente. Så går ud fra at det er noget der har med debug at gøre.
Nu har jeg kørt med en ældre udgave af VS for et stykke tid siden, og er dybt forbløffet over en feature der laver en midlertidig kopi af databasen :-)
Kører du med datasets? eller simple queries der direkte tilgår records i tabellerne i db'en ? Mangel på fejlmeldinger er i sig selv ikke bevis på at noget er sket eller ikke sket. Har du steppet gennem din kode for at se om querien kører når den skal? Har du checket om evt. kriterier er opfyldt?
Du nævner "kan godt se at tabellerne ikke er opdateret" - det er måske et godt sted at starte at spørge hvorfor er de ikke det. Og roll-back? Lyder igen ret mystisk - jeg tvivler på det er noget den gør af sig selv, så der må være noget kode der laver ændringer -din query som kører en uforudset omgang? Sæt et break point i koden og se hvad der sker.
Ja, jeg har valgt at den skal kopiere databasen ind i mit projekt. Dvs jeg kan se at den ligger i min projektmappe:
Visual Studio 2008\Projects\caseHandler\caseHandler\db.accdb
men kan så se at der i debug-mappen også ligger en database. Som bliver kopieret dertil hver gang jeg vælger at debugge. Så jeg må gå ud fra at det der sker er at de rettelser man laver under debug mistes fordi den kopierer kildedatabasen hver gang?
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.