Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
tester
Člen
Avatar
tester:30.7.2014 11:20

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
30.7.2014 11:20
Avatar
Gramli
Tvůrce
Avatar
Odpovídá na tester
Gramli:30.7.2014 11:33

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
Tvůrce
Avatar
Odpovídá na tester
Gramli:30.7.2014 11:41

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:30.7.2014 11:49

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

 
Nahoru Odpovědět
30.7.2014 11:49
Avatar
Gramli
Tvůrce
Avatar
Odpovídá na tester
Gramli:30.7.2014 12:04

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
Tvůrce
Avatar
Milan Křepelka:30.7.2014 12:26

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:30.7.2014 12:43

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
Tvůrce
Avatar
Odpovídá na tester
Milan Křepelka:30.7.2014 13:01

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:30.7.2014 13:02

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:30.7.2014 13:04

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:30.7.2014 13:08

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:30.7.2014 13:13

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
Avatar
Odpovídá na tester
sadlomaslox25:30.7.2014 13:25

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:30.7.2014 13:37

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:30.7.2014 13:57

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:30.7.2014 14:11

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
Tvůrce
Avatar
Odpovídá na tester
Milan Křepelka:30.7.2014 14:36

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:30.7.2014 14:42

+-

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