C# připojení k DB – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# připojení k DB – .NET – Fórum – Programujte.comC# připojení k DB – .NET – Fórum – Programujte.com

 

RePRO0
Super člen
24. 11. 2011   #1
-
0
-

Zdravím,

chci se jednoduše připojit k databázi (Northwind). Už několikrát jsem to zkoušel a povedlo se mi to (jak v GUI, tak v Console). Ale teď? Ani omylem... Je to nějaká prkotina, nebo už fakt nevím.

Používám klasicky: SqlClient -> DataReader. V obouch výjimkách mi to vyhodí do MessageBoxíku:

System.Collections.ListDictionaryInternal. To je nějaká chyba s kolekcemi, nebo co? Co to má společného s připojením, když volám metodu connect()? Asi jsem nepozorný nebo to bude hodně jalový kiks.

Díky moc. Jo, a abych nezapomněl, tak příkládám můj zdroják:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace Databaze
{
    public partial class MyDatabase : Form
    {
        private SqlConnection conn;
        private string connectionString = @"server = .\sqlexpress; integrated security = true; database = Northwind";
        private SqlDataReader reader = null;

        public MyDatabase()
        {
            InitializeComponent();
        }

        public void connect()
        {
            conn = new SqlConnection(connectionString);

            try
            {    
                conn.Open();
            }

            catch (Exception ex)
            {
                MessageBox.Show("Chyba připojení: " + ex.Data.ToString());
            }

            finally
            {
                lblStavShow.Text = conn.State.ToString();
            }
        }

        public void showData()
        {
            SqlCommand cmd = new SqlCommand(@"SELECT * FROM Employees", conn);
            
            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    listboxData.Items.Add(reader[0].ToString() + "" + reader[1] + "" + reader[2] + "" + reader[3] + "" + reader[4]);
                }
            }
            
            catch (Exception ex)
            {
                MessageBox.Show("Chyba: " + ex.Data);
            }
            
            finally
            {
                reader.Close();
                conn.Close();
            }
        }

        private void btnDataReader_Click(object sender, EventArgs e)
        {
            showData();
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            connect();
        }
    }
}
Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
liborb
~ Redaktor
+18
Guru
24. 11. 2011   #2
-
0
-

Možná je to blbost, ale nevadí mu ty mezery v connectionString. Tak nějak mám zafixováno, že to všichni (i dokumentace) mastí bez mezer.

Nahlásit jako SPAM
IP: 78.80.52.–
24. 11. 2011   #3
-
0
-

#1 RePRO
U toho MessageBoxu nech jen ex.ToString()a dozvíš se, co tam je za chybu. A mimochodem, vytvářet instanci SqlConnection společnou pro celou třídu, není moc dobré.

#2 liborb
Nevím to úplně jistě, ale myslím, že by to nemělo vadit.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
RePRO0
Super člen
24. 11. 2011   #4
-
0
-

#2 liborb
Na mezery to vliv mít nebude - s mezerama to valí slušně v nějakých ostatních mých connection programech.

#3 djanosik
Má to být ex.ToString(); místo toho, co sem tam měl ex.Data.ToString();. Takže vím, kde je chyba. Nespojí se to! Ale proč? To nechápu! :-) Bude za tím (nejspíš) connection string, nebo ten soubor (kde přesně má být v mém projektu umístěn?)

Vím, mám to celé v jedné třídě, ale je to do školy. ;-) Učitel prostě chce načíst data pomocí DataReaderu a vypsat je (tak jak to mám). Kdybych to měl dělat jako velko-projekt, určitě bych to rozdělil na další podproblémy. Takhle je to dost odvážné.

Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
24. 11. 2011   #5
-
0
-

#4 RePRO
Super! Můžeš se s námi o tu chybovou hlášku podělit (stačí asi ex.Message)? ConnectionString neodkazuje na soubor, ale na databázi, která je připojená k SQL Express serveru. Pokud se chceš připojit přímo k .mdf souboru, potřebuješ jinej ConnectionString. 

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
RePRO0
Super člen
24. 11. 2011   #6
-
0
-

Ta chyba je strašně dlouhá a nejde zkopírovat (možná bude chyba mezi židlí a klávesnicí)

Ohledně databáze (když jsem v IDE třeba C sharp 2010 express edition):

V sekci Data mi to pořád vybízí na Data source. Ve škole děláme DB s managmentem. Je nějaká spojitost přímo v IDE třeba C sharp express 2010? Potřebuju to přes DataReader (jak jsem psal). Přes DataSet ne (též jsem ale používal).

Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
24. 11. 2011   #7
-
0
-

#6 RePRO
Tak tu chybu nezobrazuj v MessageBoxu, použij k tomu debugger ... a stačí poslat hodnotu ex.Message. Jinak vůbec nevím, cos tím posledním odstavcem myslel.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
RePRO0
Super člen
24. 11. 2011   #8
-
0
-

Ten poslední odstavec neřeš. Myslel jsem, jestli se náhodou nedá v prostředí IDE C sharp 2010 express pracovat s DB na přímo (bez managmentu). Pořád v tom nevidím přímou spojitost.

Link:http:// http://imageshack.us/…ssageii.png/

Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
24. 11. 2011   #9
-
0
-

#8 RePRO
Tak to je jasný. V ConnectionStringu musíš uvést uživatelské jméno a login k SQL serveru.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Zed_10
Newbie
1. 12. 2011   #10
-
0
-

Co vim, tak v database exploreru můžeš pracovat s tabulkami a pokud se připojíš ke zvolené databázi, tak v properties v database exploreru najdeš connectionString (Data-Add New Data Source-New Connection)

Nahlásit jako SPAM
IP: 78.102.92.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Podobná vlákna

Připojení — založil milanmichal

C# a připojení k databázi — založil whysper

[C#] Připojení .dll — založil beachboy

Připojení 3 monitorů — založil Jan Veselý

Test připojeni — založil Borisek

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý