C# i MySQL

0

Mam pytanko.
Na kompie mam postawiony serwer Krasnala (Apache) i nie mogę się połączyć z Bazą Danych ze środowiska C#. Wie ktoś może jak wydobywac dane z tabelek korzystając z C#. Będę wdzięczny za każde info.

Pozdrawiam

0

Bylo ostatnio w dziale c#

0

Dopiero od niedawna zająłem się C# więc proszę o wyrozumiałość.

Mam ogromny problem z łączeniem się z bazą danychna moim serwerze. Posiadam serwer krasnal. Oto kod jaki wpisuję:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;

/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
const string CONN_STRING = "Server=localhost;Initial Catalog=bukmach;User Id=krasnal1;Password=krasnal"; 
	
using (SqlConnection con = new SqlConnection(CONN_STRING))
{
	SqlCommand query = con.CreateCommand();
	query.CommandText = "SELECT id FROM tabelka";
	con.Open();
using (SqlDataReader reader = query.ExecuteReader())
{
while(reader.Read())
{

	
}
}
con.Close();
}

        

}
}

W momencie gdy program próbuje się połączyć z Bazą Danych wyskakuje mi błąd:

System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled</TraceIdentifier><Description>Unhandled exception</Description><AppDomain>Polaczenie.exe</AppDomain><Exception><ExceptionType>System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType><Message>An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: TCP Provider, error: 0 - Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.)</Message><StackTrace> at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Connect(Boolean&amp; useFailoverPartner, Boolean&amp; failoverDemandDone, String host, String failoverPartner, String protocol, SqlInternalConnectionTds connHandler, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject, Boolean aliasLookup)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)

Oraz pojawia się okienko wyjątku EXCEPTION w którym jest napis:

Exception System.Data.SqlClient.SqlException was thrown in debugee:
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: TCP Provider, error: 0 - Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.)

OpenConnection()
Open()
Main() - c:\Nowy folder (2)\Polaczenie\Main.cs:22,3

Nie wiem w czym tkwi problem

HELP!!!!!!!!

0

Komputer to nie wrozka, gdzie jest napisane, ze program ma sie polaczyc akurat z MySQL'em?

http://www.google.pl/search?q=c%23+mysql&

0

Czyli jak to trzeba poprawić??

0

Tez mam apacha i bazke mysql i lacze sie przez connectory , czyli pliczek mysql.data.dll

 
private MySqlConnection		conn;
private DataTable			data;
private MySqlDataAdapter	da;
private MySqlCommandBuilder cb;

        public void polacz()
        {
            
            if (conn != null)
                conn.Close();
            
          

            try
            {
                conn = new MySqlConnection("server=127.0.0.1;user id=root;password=haslo;database=tabela");
                conn.Open();
             

            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Error connecting to the server: " + ex.Message);
            }
        }

I wyswietlanie wierszy:

private void Form1_Load(object sender, EventArgs e)
        {
            polacz(); //tu funkcja polaczenia ta powyzej
            MySqlDataReader reader = null;
            
            MySqlCommand cmd = new MySqlCommand("select * from tabela", conn);
            try
            {
      
                
                reader = cmd.ExecuteReader();
                comboBox1.Items.Clear();

                while (reader.Read())
                {
                    comboBox1.Items.Add(reader.GetString(0));
                   
               
                }
                


            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Failed to populate database list: " + ex.Message);
            }
            finally
            {
                if (reader != null) reader.Close();
            }

Oczywiscie Mysql.Data.dll musimy dolaczyc do referencji i w uses dac: using MySql.Data.MySqlClient;

Wszystko dziala super.

P.S.
Sterownik jest np tutaj: http://mirror.etf.bg.ac.yu/mysql/Downloads/Connector-Net/mysql-connector-net-1.0.8-RC-noinstall.zip

0

Oczywiscie Mysql.Data.dll musimy dolaczyc do referencji i w uses dac: using MySql.Data.MySqlClient;

Jak to się dodaje?? :|

0
zuzlowiaki napisał(a)

Oczywiscie Mysql.Data.dll musimy dolaczyc do referencji i w uses dac: using MySql.Data.MySqlClient;

Jak to się dodaje?? :|

Aby dodać pliczek do referencji wybieras z menu PROJECT -> ADD REFERENCE -> Zakładka BROWSE i znajdujesz plik na kompie.

A co do uses jto na poczatku kazdego pliku .cs masz dolaczene przestrzenie nazw np:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;

wiec dodajesz jeszcze recznie:

using MySql.Data.MySqlClient;

0

korzystam z Visual Studio 2005.
Probowalem poczynic jakiekolwiek operacje na MySQL z poziomu ASP (C#). Niestety bezskutecznie. Ponizszy kod wypisze mi komunikat ze polaczenie nawiazane i ze zapytanie wykonane chociaz tak naprawde co bym nie wpisal jako zapytanie to zwroci wartosc rozna od FALSE :| A jak robie INSERT to zmian w bazie nie widac co implikuje ze caly ten mechanizm nie dziala :/

co robie zle? kod:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MySql.Data.MySqlClient;

public partial class _Default : System.Web.UI.Page 
{

    private MySqlConnection conn = null;
    private DataTable data;
    private MySqlDataAdapter da;
    private MySqlCommandBuilder cb;

    protected void Page_Load(object sender, EventArgs e)
    {
        this.conn = null;

        this.conn = new MySqlConnection("server=127.0.0.1;user id=root;password=haslo;database=test");

        conn.Open();

        if (conn != null) Response.Write("tak udalo sie nawizac polaczenie<br />");

        MySqlDataReader reader = null;

        MySqlCommand cmd = null;

        cmd = 
            new MySqlCommand("INSERT INTO album VALUES (NULL,'Bartosz','glupoty')", conn);

        if (cmd != null) Response.Write("udalo sie wyslac zapytanie<br />");

    }



}
0
if (conn != null) Response.Write("tak udalo sie nawizac polaczenie<br />");

        MySqlDataReader reader = null;

        MySqlCommand cmd = null;

        cmd =
            new MySqlCommand("INSERT INTO album VALUES (NULL,'Bartosz','glupoty')", conn);

Mi się zdaje, że wcale nie zrobiłeś INSERT`a na bazie tylko przygotowałeś zapytanie.

Powinno być na końcu dopisane:

cmd.ExecuteNonQuery();
0

masz racje, dzieki!!

1

Nawiązując do postu Gliny mam pytanie jak wypełnić danymi DataGridView ?? Ogólnie wyklikać łatwo, ale w kodzie to już nie wiem jak to zrobić. A może jest jakaś alternatywa do DaraGridView?

ROZWIĄZANIE:

using(MySqlDataAdapter dataAdapter = new MySqlDataAdapter(
                "SELECT * FROM info", conn))
            {
                DataTable tablicaDanych = new DataTable();
                dataAdapter.Fill(tablicaDanych);
                dataGridView1.DataSource = tablicaDanych;
            }

nawiązując do kodu glina tworzymy połączenie z bazą
wcześniej dodajemy na stage DataGridView o nazwie dataGridView1.

1 użytkowników online, w tym zalogowanych: 0, gości: 1