Avatar billede bandersen2200 Nybegynder
24. juni 2011 - 10:53 Der 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");

            SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
            mySqlCommand.CommandText = "INSERT INTO Output (Object) VALUES ('Jason')";

            mySqlConnection.Open();

            int numberOfRows = mySqlCommand.ExecuteNonQuery();
            Console.WriteLine("Number of rows added = " + numberOfRows);

            mySqlConnection.Close();
Avatar billede Syska Mester
24. juni 2011 - 11:38 #1
Hvad er det du ikke kan? Det lyder som om du både kan læse og skrive. Men til slut siger du at du ikke kan skrive ?

Har du SSMS installeret? eller bruger du kun den indbyggede database ?

Sikker på du bruger samme connection string over det hele ?

mvh
Avatar billede keysersoze Guru
24. juni 2011 - 12:23 #2
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.
Avatar billede bandersen2200 Nybegynder
24. juni 2011 - 12:52 #3
Hej keysersoze


Det lyder helt rigtig. Så snart programmet lukker og jeg åbner Database Exploren => Refresh => Show Table Data

Så står der det samme som da jeg startede. Er det muligt at ændre det ?
Avatar billede Syska Mester
24. juni 2011 - 13:12 #4
Der er vel et par muligheder.

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.

mvh
Avatar billede bandersen2200 Nybegynder
24. juni 2011 - 13:33 #5
Hej og tak for hjælpen

Jeg har prøvet dine forslag:
1:

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."

Mvh
Benjamin
Avatar billede arne_v Ekspert
25. juni 2011 - 04:02 #6
Medmindre du er noedt til det p.g.a. upload til web hotel, saa drop det attach.

Lav en "normal" database og brug den. Punktum.
Avatar billede bandersen2200 Nybegynder
25. juni 2011 - 13:39 #7
Hej arne_v

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 ?

Mvh
Benjamin
Avatar billede Syska Mester
25. juni 2011 - 13:52 #8
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.

Men som Arne_v siger ... brug en rigtig database.

mvh
Avatar billede bandersen2200 Nybegynder
25. juni 2011 - 14:16 #9
Ok, men er det muligt at åbne den database fra Database Exploren ?

Er det ikke muligt at sætte et flue ben i Visual så den ikke overskriver ? Er en lokal database ikke også en rigtig database ?

Men ellers siger jeg tak for hjælpen :)

Mvh
Benajmin
Avatar billede Syska Mester
25. juni 2011 - 15:00 #10
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.

mvh
Avatar billede bandersen2200 Nybegynder
29. juni 2011 - 10:32 #11
Hej buzzz nej har du et link til svaret ?
Avatar billede Syska Mester
29. juni 2011 - 14:51 #12
svar
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
Computerworld tilbyder specialiserede kurser i database-management

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



IT-JOB

Politiets Efterretningstjeneste

Bliv AD-specialist hos PET

Udviklings- og Forenklingsstyrelsen

Data Scientist til stærkt data- og analysekontor

Sparekassen Danmark

Systemudvikler

Udviklings- og Forenklingsstyrelsen

IT-generalister til rollen som systemejer