24. juni 2011 - 10:53Der er
11 kommentarer og 1 løsning
Skrivning/Ændringer i database (C#)
Hej
Jeg prøver at skrive og ændre i en database. Jeg bruger Microsoft Visual C# 2010 Express med deres gratis SQL database.
Hvis jeg skriver til den kan jeg læse ændringerne i min reader = cmd.ExecuteReader(); Så min Queryes virker fint. Men når programmet er færdig med at køre og jeg åbner mine tabeller er der ikke sket nogen former for ændringer ? Når jeg udføre følgende kommando sker der ingen ændringer i min tabel ?
SqlConnection mySqlConnection = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\H_SPR.mdf;Integrated Security=True;User Instance=True");
Så det du gør er at teste applikationen gennem visual studio - og så snart du lukker en debug-session nulstilles alle data?
I så fald lyder det som om at din database kopieres over i bin-mappen når du debugger og dermed overskriver de data der er blevet ændret siden sidste debug.
1. Ændre path til din DB ... brug en Absolute Path eller relative og dot dig ud til roden af dit projekt, så du er sikker på det er den samme database du kigger ned i hver gang.
2. Klik på din database fil, properties, og "Copy to Output Directory", sæt den til "Do Not Copy", så skal du bare selv huske at kopiere den med ud.
Husk, din database her, er ligesom en Content fil, dll, etc. derfor den blev kopieret med ud hver gang.
TP.con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=d:\\my documents\\Visual Studio 2010\\Projects\\RouteObjectFinder\\RouteObjectFinder\\H_SPR.mdf;Integrated Security=True;User Instance=True";
Denne ændring virker i programmet men der er stadig ingen ændringer i Database Explorer efter programmet har kørt ?
2: Når jeg kører programmet og prøver at genåbne forbindelsen .Open(); får jeg følgende fejl: "An attempt to attach an auto-named database for file d:\my documents\visual studio 2010\Projects\RouteObjectFinder\RouteObjectFinder\bin\Debug\H_SPR.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share."
Det er ikke nødvendigt, jeg kører den blot lokalt på computeren. Men det kan da ikke passe at tabellerne ikke gemmes efter der er skrevet til dem ? Hvorfor opdateres de ikke ?
Du bliver jo nød til at forstå hvad er sker. Hvis du overskriver en fil ... ja, så bliver den overskrevet.
Derfor kan du ikke se de data.
Din database fil bliver kopieret ud til /bin/Debug /bin/Release
den kommer måske fra
/
Ergo ... må du jo løse problemet enten ved at læde være med at kopiere den ud i din Debug/Release dir ... eller anden smart løsning.
Dit program er jo stadig under udvikling, så jeg ser ikke noget problem i den bliver overskrevet, du kan jo bare fra din designer indsætte det data du vil have, så kommer det også med når du laver en release af dit program.
Jo ... har du læst mit svar fra: Skrevet fre. d. 24. juni 2011 kl. 13:12:19| #4
Mange år siden jeg har har brugt den måde at lave en db på, men går ud fra den er som en fil ... og ved hvert compile bliver den overskrevet, hvis de ikke er ens eller hvad dine settings nu er for den fil i dit projekt.
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.