[MySql/C#] Access denied


(kleiik) #1

Chcę wypełnić dataseta ale propgram zatrzymuje mi się w punkcie którym ma zapisać dane do dataseta i wyskakuje komunikat "Access deniad for user ...". Normalnie z bazą się łączy i dopisuje dane do tabeli. Co można na to poradzić ?

conn.Open();


                string strCmd = "SELECT * FROM dane";

                MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(strCmd, conn);

                DataSet dane = new DataSet("dane");

                MySql.Data.MySqlClient.MySqlDataAdapter adap = new MySql.Data.MySqlClient.MySqlDataAdapter(strCmd, conn.ConnectionString);

                adap.Fill(dane); <- w tym miejscu program się "sypie"

                this.dataGrid1.DataSource = dane;

                this.dataGrid1.DataMember = dane.Tables[0].TableName;


                conn.Close();

([alex]) #2

spróbuj zamiast:

MySql.Data.MySqlClient.MySqlDataAdapter adap = new MySql.Data.MySqlClient.MySqlDataAdapter(strCmd, conn.ConnectionString);

zapodać:

MySql.Data.MySqlClient.MySqlDataAdapter adap = new MySql.Data.MySqlClient.MySqlDataAdapter();

adap.SelectCommand=cmd;


(Fiołek) #3

@topic: Jeśli masz już połączenie otwarte, to nie otwieraj kolejnego(jest możliwość, że użytkownik ma max. jedno połączenie na raz ustawione). Zamiast tworzyć adapter podając do niego ConnectionStringa użyj już otwartego połączenia i przekaż połączenie(zamiast conn.ConnectionString samo conn).

PS. po co tworzysz obiekt "cmd" jak i tak go nie używasz?

EDIT: to jednak ja mam za małe doświadczenie... Przepraszam, jeśli kogoś uraziłem.


(kleiik) #4

To co podał alex zadziałało


([alex]) #5

Mimo to Fiołek ma racje, jeżeli nowe połączenie nie jest konieczne to należy unikać tworzenia nowego połączenia.