Diskuze: Práce s DB

C# .NET .NET (C# a Visual Basic) Práce s DB American English version English version

Avatar
tester
Člen
Avatar
tester:

Ahoj, vytvořil jsem si ve Visual Studiu 2012 Service-based Database. Připojení a nahrávání do databáze probíhá v pořádku, ale data se po skončení aplikace z db vymažou a při dalším startu je db čistá a vše se indexuje od jedničky. Může mi prosím někdo poradit?

SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\DB.mdf;Integrated Security=True");

                DateTime time = new DateTime();
                time = DateTime.Now;
                string dotaz = String.Format("INSERT INTO Listky (Cislo,Datum_vzniku,Zaplaceno,Datum_zaplaceno) values ('{0}','{1}','{2}','{3}')", cis.Next(), time.ToString("yyyy-MM-dd HH:MM:ss"), cis.Next(0, 1), time.ToString("yyyy-MM-dd HH:MM:ss"));
                SqlCommand prikaz = new SqlCommand();
                conn.Open();
                prikaz.Connection = conn;
                prikaz.CommandText = dotaz;
                prikaz.ExecuteNonQuery();
                conn.Close();
 
Odpovědět  +1 30.7.2014 11:20
Avatar
Gramli
Redaktor
Avatar
Odpovídá na tester
Gramli:

S tímhle jsem sice nikdy nepracoval, ale není ta databáze závislá na běhu služby? To znamená, že když zastavíš službu, tak se databáze vymaže?

Nahoru Odpovědět 30.7.2014 11:33
Kdo to říká ten to je...
Avatar
Gramli
Redaktor
Avatar
Odpovídá na tester
Gramli:

Zkus u toho .mdf souboru ve vlastnostech nastavit místo "Copy Always" nastavit "Copy if newer"

Nahoru Odpovědět 30.7.2014 11:41
Kdo to říká ten to je...
Avatar
tester
Člen
Avatar
tester:

nepomohlo, stále to začíná od nuly

 
Nahoru Odpovědět 30.7.2014 11:49
Avatar
Gramli
Redaktor
Avatar
Odpovídá na tester
Gramli:

Já ti asi neporadím, ale zkus se prolouskat tímhle:
http://stackoverflow.com/…database-mdf
http://stackoverflow.com/…010-ultimate

řeší stejný problém co ty.

Nahoru Odpovědět 30.7.2014 12:04
Kdo to říká ten to je...
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

2012 už nemám, ale myslím, že to je očekáváné chování. Pokud mám projekt typu databáze, tedy projekt ve kterém se databáze namodeluje a slouží jako vstup k jinému projektu, tak mi není s podivem, že dostaneš výslednou databázi vždy v nějakém výchozím stavu.

Ten výsledek si nakopíruj do jiného projektu a pak už ti ji nic nepřelízne. Jestli se ti tam tvoří nejaký databázový kontext, tak ty mývají nějaké inicializery k nahrání výchozích dat.

 
Nahoru Odpovědět 30.7.2014 12:26
Avatar
tester
Člen
Avatar
tester:

takže tu databázi zkopírovat a vložit třeba do debugu nebo releasu a nastavit novou cestu?

 
Nahoru Odpovědět 30.7.2014 12:43
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na tester
Milan Křepelka:

Já opravdu netuším jak tu solution máš udělanou. Prostě si udělej samotnej jinej projekt bez toho databázovýho, k němu tu databázi nakopíruj.

 
Nahoru Odpovědět 30.7.2014 13:01
Avatar
tester
Člen
Avatar
tester:

a jiný způsob není jak pracovat s databázemi bez toho abych přišel po zavření app o data?

 
Nahoru Odpovědět 30.7.2014 13:02
Avatar
sadlomaslox25:

jde o to ze ty mas svuj projekt PROJEKT ve kterem mas soubor databaze data.mdf. jakmile stisknes tlacitko run (debug/release) tak se tento soubor nakopiruje do slozky release/debug a nad touto kopii jsou provadeny operace ktere zadavas v tom svem programu. to znamena ze ty data existuji v souboru debug/data.mdf.

pokud chces databazi jednou naplnit nejakymi uvodnimy data, tak ji spust napln a pak prekopiruj z PROJEKT/debug/da­ta.mdf do PROJEKT/data.mdf.

pokud chces, aby se konstantne prlnila tak dalsi moznost je zmenit connection string z
AttachDbFilena­me=|DataDirec­tory|\DB.mdf ne
AttachDbFilena­me=C:\user\do­kumenty\pepa\vi­sualstudi\PRO­JEKT\DB.mdf

este sou dalsi moznosti ale ty uz nebudu psat protoze sou komplikovane na vysvetleni. :D

 
Nahoru Odpovědět 30.7.2014 13:04
Avatar
tester
Člen
Avatar
tester:

potřebuji když se aplikace zapne, aby šla databáze plnit, mazat, procházet a po zavření app a znovu otevření jsem s daty které zůstaly mohl dále pokračovat a nepřišel sem o vše

 
Nahoru Odpovědět 30.7.2014 13:08
Avatar
Michal Žůrek (misaz):

vyzkoušej aplikaci spustit ze složky debug kde je její exe, ne z Visual Studia.

Nahoru Odpovědět 30.7.2014 13:13
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na tester
sadlomaslox25:

zmenit connection string z puvodniho relativniho
AttachDbFilena­me=|DataDirec­tory|\DB.mdf
na absolutni cestu ktera vede jen do slozky projektu
AttachDbFilena­me=C:\user\do­kumenty\pepa\vi­sualstudi\PRO­JEKT\DB.mdf

pri finalnim nasazeni aplikace se to pak zmeni zase na ten relativni.

 
Nahoru Odpovědět 30.7.2014 13:25
Avatar
tester
Člen
Avatar
tester:

nebude lepší místo tohodle všeho použít nějakého klienta na naistalování který bude fungovat bez problému?

 
Nahoru Odpovědět 30.7.2014 13:37
Avatar
Odpovídá na tester
sadlomaslox25:

cooo?
zarazi me, ze nekdo povazuje za slozite vymenit jeden radek kodu presneji je to

#if DEBUG
string cstring ="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\DB.mdf;Integrated Security=True"
#else
string cstring ="Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\nekde\kde\je\PROJEKT\DB.mdf;Integrated Security=True"
#endif

a chce to vymenit za "nejakeho klienta"? co je to pojem nejaky klient? a proc je slozite vymenit jeden radek kodu :D

 
Nahoru Odpovědět 30.7.2014 13:57
Avatar
tester
Člen
Avatar
tester:

no a pokud změním umístění souborů na jiné pc?

 
Nahoru Odpovědět 30.7.2014 14:11
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na tester
Milan Křepelka:

Tak se celé vlákno změní s učební lekci pro testera.

 
Nahoru Odpovědět 30.7.2014 14:36
Avatar
Odpovídá na tester
sadlomaslox25:

+-

#if DEBUG
string cstring ="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\DB.mdf;Integrated Security=True"
#else
sting cesta=Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
string cstring ="Data Source=(LocalDB)\v11.0;AttachDbFilename="+cesta+"\DB.mdf;Integrated Security=True"
#endif
 
Nahoru Odpovědět 30.7.2014 14:42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.