Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 2. diel - MS-SQL krok za krokom: Vytvorenie databázy a tabuľky

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá na Jan Sála
Michal Štěpánek:16.8.2014 13:20

Podle mě by měla. protože je to v podstatě jen soubor, který je ovládán tou aplikací...
Kdysi jsem dělal jednu aplikaci, kde jsem jako databázi použil MS Access a normálně to bez problémů běhá i na počítači, kde nejsou žádné office nainstalované...

Odpovedať
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Jan Sála
Tvůrce
Avatar
Jan Sála:16.8.2014 13:46

nejsme si jistý jestli jsem udělal postup správně
když kliknu pravým talčítkem na databázi v server exploreru je tam tento string: "Data Source=(Local­DB)\v11.0;AttachDbFi­lename="C:\User­s\Jan\Documen­ts\Visual Studio 2013\Projects\Pa­lappras\Palap­pras\Data\Slo­vicka.mdf";In­tegrated Security=True;Con­nect Timeout=30"

Ale když kliknu v data source - tak tam nejsou properties takže ten string musím najít až v connection wizard a tam je tento: Data Source=(Local­DB)\v11.0;AttachDbFi­lename=|DataDi­rectory|\Data\Slo­vicka.mdf;Inte­grated Security=True"

ten normálně v c# kódu používám a na mém počítači funguje (i mimo visual studio a i když přesunu složku debug jinam)

Odpovedať
Když nevím co s tím, tak je chyba v compileru.
Avatar
Odpovedá na Jan Sála
Michal Štěpánek:16.8.2014 14:42

Když se koukneš do App.config, tak tam máš cestu k databázi popsanou (connectionstring).

DataDirectory znamená složku té aplikace, odkud jí spouštíš. Pokud to dáš do Program Files, může se stát, že to nebude chtít pracovat, protože tam jsou automaticky nastavována práva jen pro čtení...
Odpovedať
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Jan Sála
Tvůrce
Avatar
Odpovedá na Michal Štěpánek
Jan Sála:16.8.2014 17:50

Chyba musí být v tomto kódu - nějak jsem to musel chybně připojit

//try
//{

    string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Data\Slovicka.mdf;Integrated Security=True";
    using (SqlConnection pripojeni = new SqlConnection(connectionString))
    {
        pripojeni.Open();
        SqlCommand prikaz = new SqlCommand("SELECT * FROM Preklad WHERE Spanelsky LIKE @slovo ORDER BY Spanelsky", pripojeni);
        prikaz.Parameters.AddWithValue("@slovo", "%" + slovo + "%");
        SqlDataReader dataReader = prikaz.ExecuteReader();
        while (dataReader.Read()) // dokud neprojdeme vsechny zaznamy
        {
            ListBoxItem itm = new ListBoxItem();
            Vysledek vysl = new Vysledek();
            string rod = "";
            string pravidelnost = "";

            if (!dataReader["Rod"].ToString().Contains(' ') || !dataReader["Rod"].ToString().Contains(' '))
                rod = "; rod: " + dataReader["Rod"].ToString();

            if (dataReader["Nepravidelné"].ToString().Contains('r'))
                pravidelnost = "; Pravidelnost: " + dataReader["Nepravidelné"].ToString();
            //Učebnice: {3}; Lekce: {4}; Kategorie: {5};  ,dataReader["Ucebnice"].ToString(),dataReader["Lekce"].ToString(),dataReader["Kategorie"].ToString()
            string horni = string.Format("{0}{1}{2}", dataReader["Spanelsky"].ToString(), rod, pravidelnost);

            string[] cesky = new string[4];
            cesky[0] = dataReader["Cesky1"].ToString();
            cesky[1] = dataReader["Cesky2"].ToString();
            cesky[2] = dataReader["Cesky3"].ToString();
            cesky[3] = dataReader["Cesky4"].ToString();
            string dolni = cesky[0];
            for (int i = 1; i <= 3; i++)
                if (cesky[i].Length > 0)
                    dolni += "; " + cesky[i];
            vysl.slovickoTB.Text = horni;
            vysl.prekladTB.Text = dolni;
            itm.Content = vysl;
            try
            {
                vysledky.Items.Add(itm);
            }
            catch { }
        }
    }
//}
//catch { }

Zde je soubor App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
  </configSections>
  <connectionStrings>
    <add name="Palappras.Properties.Settings.SlovickaConnectionString"
      connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Data\Slovicka.mdf;Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>
Odpovedať
Když nevím co s tím, tak je chyba v compileru.
Avatar
Odpovedá na Jan Sála
Michal Štěpánek:16.8.2014 18:07

Zkus ten soubor "Slovicka.mdf" dát někam jinam (třeba do C:\DB\Slovicka­.mdf") a do Connectionstringu zadej pevnou cestu, jestli to pomůže

<connectionStrings>
    <add name="Palappras.Properties.Settings.SlovickaConnectionString"
      connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\DB\Slovicka.mdf;Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

A v tom kódu souboru by mělo stačit uvést pouze jméno toho ConnectionStringu z App.config

Editované
Odpovedať
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Jan Sála
Tvůrce
Avatar
Jan Sála:27.8.2014 18:58

Dal jsem ten kód to try catch a nechal jsem si chybu vypsat.
viz obrázek
Když přesunu na svém počítači aplikaci do jiné složky a spustím bez VS tak funguje - ověřil jsem zda to načítá opravdu z té lokální databáze a ne z nějaké jiné.
Ale na jiných počítačích to hází tuto chybu viz obrázek
Není to třeba tím že se musí nainstalovat sql server expres nebo není chyba někde v zabezpečení - já jsem použil windows authorization

Editované
Odpovedať
Když nevím co s tím, tak je chyba v compileru.
Avatar
Odpovedá na Jan Sála
Michal Žůrek - misaz:27.8.2014 19:23

jaký používáš connection string? Pošli kód, kterým se k databázi připojjuješ. Kopíruješ na počítače i tu databázi?

Avatar
Jan Sála
Tvůrce
Avatar
Odpovedá na Michal Žůrek - misaz
Jan Sála:27.8.2014 20:09

Ano tu databázi tam kopíruju
ten kód už jsem psal výše ale tady je:

//try
//{

    string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Data\Slovicka.mdf;Integrated Security=True";
    using (SqlConnection pripojeni = new SqlConnection(connectionString))
    {
        pripojeni.Open();
        SqlCommand prikaz = new SqlCommand("SELECT * FROM Preklad WHERE Spanelsky LIKE @slovo ORDER BY Spanelsky", pripojeni);
        prikaz.Parameters.AddWithValue("@slovo", "%" + slovo + "%");
        SqlDataReader dataReader = prikaz.ExecuteReader();
        while (dataReader.Read()) // dokud neprojdeme vsechny zaznamy
        {
            ListBoxItem itm = new ListBoxItem();
            Vysledek vysl = new Vysledek();
            string rod = "";
            string pravidelnost = "";

            if (!dataReader["Rod"].ToString().Contains(' ') || !dataReader["Rod"].ToString().Contains(' '))
                rod = "; rod: " + dataReader["Rod"].ToString();

            if (dataReader["Nepravidelné"].ToString().Contains('r'))
                pravidelnost = "; Pravidelnost: " + dataReader["Nepravidelné"].ToString();
            //Učebnice: {3}; Lekce: {4}; Kategorie: {5};  ,dataReader["Ucebnice"].ToString(),dataReader["Lekce"].ToString(),dataReader["Kategorie"].ToString()
            string horni = string.Format("{0}{1}{2}", dataReader["Spanelsky"].ToString(), rod, pravidelnost);

            string[] cesky = new string[4];
            cesky[0] = dataReader["Cesky1"].ToString();
            cesky[1] = dataReader["Cesky2"].ToString();
            cesky[2] = dataReader["Cesky3"].ToString();
            cesky[3] = dataReader["Cesky4"].ToString();
            string dolni = cesky[0];
            for (int i = 1; i <= 3; i++)
                if (cesky[i].Length > 0)
                    dolni += "; " + cesky[i];
            vysl.slovickoTB.Text = horni;
            vysl.prekladTB.Text = dolni;
            itm.Content = vysl;
            try
            {
                vysledky.Items.Add(itm);
            }
            catch { }
        }
    }
//}
//catch { }
Odpovedať
Když nevím co s tím, tak je chyba v compileru.
Avatar
Odpovedá na Jan Sála
Michal Žůrek - misaz:27.8.2014 20:18

a kopíruješ ji do DataDirectory? Zkus tu cestu poskládat v C#, tak aby byla absolutní.

Avatar
Jan Sála
Tvůrce
Avatar
Jan Sála:27.8.2014 20:21

Já na ty počítače kopíruju úplně celej projekt.
A myslel jsem že DataDirectory je složka ze které se spouští aplikace

Odpovedať
Když nevím co s tím, tak je chyba v compileru.
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 94.