Wczytywanie informacji z bazy danych


(Jarek P) #1

Witam. To znowu ja i kontynuacja poprzedniego problemu :slight_smile:

Tym razem chcę wczytać informacje z bazy sql... Możecie mi powiedzieć co robię nie tak ? #-o

StringBuilder sb = new StringBuilder();

            sb.Append("SELECT ID, Imię FROM Zwierzak WHERE Rasa LIKE '");

            sb.Append(textBox1.Text);

            sb.Append("';");

            string zsb = sb.ToString();






            OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;DataSource=C:\\Documents and Settings\\Jarek\\Pulpit\\Jarek\\baza.sdf");


            con.Open();


            OleDbCommand dodaj = new OleDbCommand(zsb, con);

            OleDbDataAdapter AdapterKlientow = new OleDbDataAdapter(dodaj);


            dataSet1.Clear(); // wyczyszczenie wyników poprzedniego zapytania

            AdapterKlientow.Fill(dataSet1, "Zwierzak");

            dataGridView1.DataSource = dataSet1.Tables["Zwierzak"];



            con.Close();

PS. Posługuje się C# i SQL

Może ewentualnie jakieś inne rozwiązanie? Potrzebuje po prostu możliwości odczytu i zapisu z i do bazy danych.


(Grzelix) #2

tutaj masz jeden przykładów jak połączyć się z bazą danych

http://www.java2s.com/Tutorial/CSharp/0 ... nstate.htm

Ogólnie to tak: baza danych to nie plik tylko (pewien komputer) serwer z uruchioną odpowiednią aplikacją bazodanową ( nie wiem czy ubrałem to w odpowiednie słowa) - chodzi o to że jako source podaje się się np localhost kiedy ta aplikacja jest uruchomiona na tej samej maszynie.


(Jarek P) #3

Dzięki. Już wiem o co chodzi :slight_smile: , ale i to nie pomaga. Mam już MySQL na XAMPie, ale dalej nie bardzo potrafię to skonfigurować. Chodzi mi o połączenie z bazą i funkcje edycji.


(somekind) #4

To w końcu z jakiej bazy danych korzystasz? Bo jeśli jakieś niewspieranej domyślnie przez .NET to lepiej ściągnąć do niej dedykowany sterownik.


(Jarek P) #5

Baza MySQL, z XAMPPa


(Grzelix) #6

kawałek kodu (mój własny) program w c# baza mysql:

using MySql.Data.MySqlClient;

......


            string host = "localhost";

            string database = "db";

            string user = "root";

            string password = "";



            string strProvider = "Data Source=" + host + ";Database=" + database + ";User ID=" + user + ";Password=" + password;

            try

            {

                MySqlConnection cnMySQL = new MySqlConnection(strProvider);

                cnMySQL.Open();

                MySqlCommand cmdMySQL = cnMySQL.CreateCommand();

                cmdMySQL.CommandText = "SELECT * FROM table";

                MySqlDataReader reader;

                    reader = cmdMySQL.ExecuteReader();


               while (reader.Read())

                    {

                        .....

                    }

                reader.Close();

            cnMySQL.Close();

            }

            catch (Exception e)

            {

                Console.WriteLine(e.ToString());

            }

potrzebujesz jeszcze mysql provider http://dev.mysql.com/downloads/connector/net/


(Jarek P) #7

A jak to dorzucić do projektu ? Nie wiem, bo z bazami dopiero zaczynam :o


(Grzelix) #8

Jeśli robisz to visual studio to w panelu Solution Explorer musisz dodać References i tam wyszukujesz provider do Mysql


(Jarek P) #9

Problem rozwiązany. Dzięki.

Zastanawia mnie tylko jedna rzecz.

-Czy Net jest aż tak bardzo niedopracowany? Dlaczego nie można połączyć się z bazą bez dodatków ?


([alex]) #10

Bo każda baza danych jest inna, inaczej do niej się "dobiera".


(Jarek P) #11

Chmmmm. Ok połączyłem się. I teraz mam inny problem. W Visual C# nie mogę skonfigurować połączenia. Jak wyświetlić informacje z konkretnej tablicy ?


(Grzelix) #12

rozumiem że masz połączenie tylko nie masz wyświetlania zawartości zapytania.

Więc tak to się robi:

while (reader.Read())

        {


                for (int i= 0;i
                               Console.WriteLine( reader.GetValue(i).ToString()) ;


        }

(Jarek P) #13

To też, ale nie do końca o to mi chodzi...

Mam dataGirdViev i chcę edytować tam tą bazę :slight_smile:


(Grzelix) #14

http://social.msdn.microsoft.com/forums ... 104e677692

może to ci coś podpowie


(Jarek P) #15

Dobra. To jeszcze jak to zapisać po edycji ? :slight_smile: Cały czas działam na otwartej bazie danych. Chodzi mi o aktualizacje tej bazy, na postawie tego, co wpiszę w dataGirdView1.