2014-02-07 15 views
42

Ich bin sehr neu in der C# -Programmierung, möchte aber auf MySQL-Datenbanken zugreifen können (habe nicht das Geld für MS SQL)Wie stelle ich eine Verbindung zur MySQL Datenbank her?

Allerdings habe ich eine Frage; Ich weiß, dass Sie "MySQL Connector/NET" und "MySQL für Visual Studio" für die Entwicklung der C# -Anwendung benötigen, aber benötigt die Person, die die Anwendung installiert, diese auch? (Ist es möglich, kann ich lassen Sie einfach die Stecker DLL mit dem Programm?)

Dank

EDIT: Sind sie beide, die für den Endverbraucher oder einfach nur den Stecker? Gibt es noch etwas, das sie brauchen würden?

+3

Ja (es die d fehlt), alles, was Sie tun müssen, ist Paket die DLL mit Ihnen Programm, sollte es bereits in Ihrer Ausgabe Debug/Release-Ordner sein, wenn Sie Ihr Programm ausführen. – ohmusama

+0

Sie können auch mit dotConnect-Komponenten eine Verbindung zu MySQL herstellen. Testen Sie die kostenlose Express- oder Testversion - http://www.devart.com/dotconnect/. – Devart

+0

Hinweis: MySQL für Visual Studio funktioniert nicht in VS2010E –

Antwort

36

Sie Package Manager verwenden können, um es als Paket hinzuzufügen, und es ist der einfachste Weg zu tun. Sie brauchen nichts anderes, um mit der MySQL-Datenbank zu arbeiten.

Oder Sie können unter Befehl in Package Manager Console

PM> Install-Package MySql.Data 

NUGET Mysql.Data

+0

Wenn Sie im Fenster "NuGet-Pakete verwalten" suchen, beachten Sie, dass der Paketname ** Groß- und Kleinschreibung unterscheidet **. Vielleicht nicht so offensichtlich für jemanden, der von Paketmanagern mit Kleinbuchstaben kommt. –

43
using MySql.Data; 
using MySql.Data.MySqlClient; 

namespace Data 
{ 
    public class DBConnection 
    { 
     private DBConnection() 
     { 
     } 

     private string databaseName = string.Empty; 
     public string DatabaseName 
     { 
      get { return databaseName; } 
      set { databaseName = value; } 
     } 

     public string Password { get; set; } 
     private MySqlConnection connection = null; 
     public MySqlConnection Connection 
     { 
      get { return connection; } 
     } 

     private static DBConnection _instance = null; 
     public static DBConnection Instance() 
     { 
      if (_instance == null) 
       _instance = new DBConnection(); 
      return _instance; 
     } 

     public bool IsConnect() 
     { 
      if (Connection == null) 
      { 
       if (String.IsNullOrEmpty(databaseName)) 
        return false; 
       string connstring = string.Format("Server=localhost; database={0}; UID=UserName; password=your password", databaseName); 
       connection = new MySqlConnection(connstring); 
       connection.Open(); 
      } 

      return true; 
     } 

     public void Close() 
     { 
      connection.Close(); 
     }   
    } 
} 

Beispiel laufen:

var dbCon = DBConnection.Instance(); 
dbCon.DatabaseName = "YourDatabase"; 
if (dbCon.IsConnect()) 
{ 
    //suppose col0 and col1 are defined as VARCHAR in the DB 
    string query = "SELECT col0,col1 FROM YourTable"; 
    var cmd = new MySqlCommand(query, dbCon.Connection); 
    var reader = cmd.ExecuteReader(); 
    while(reader.Read()) 
    { 
     string someStringFromColumnZero = reader.GetString(0); 
     string someStringFromColumnOne = reader.GetString(1); 
     Console.WriteLine(someStringFromColumnZero + "," + someStringFromColumnOne); 
    } 
    dbCon.Close(); 
} 
+2

Wenn Sie Probleme mit der Internetverbindung haben und Sie versuchen möchten, bis Sie eine Verbindung herstellen, wird dies nicht funktionieren. Lösche 'if (_instance == null)' Zeile. Stellen Sie auch 'bool result = false 'als Standard ein, da es möglicherweise nicht mit Internetverbindungsproblemen und vielen anderen Problemen verbunden ist, nicht nur, weil der Datenbankname nicht festgelegt wurde. In diesem Fall gibt 'if (String.IsNullOrEmpty (databaseName)) false zurück; 'weil es sonst nur eine Ausnahme auslöst und möglicherweise sogar true zurückgibt, was nicht korrekt wäre. Upvoted, danke für den sauberen Code. – Brackets

2

Mit Blick auf den Code unten, versuchte ich es und fand: Anstatt DBCon = DBConnection.Instance(); zu schreiben, sollten Sieeingeben(Das ist für mich gearbeitet hat)

und statt MySqlComman cmd = new MySqlComman(query, DBCon.GetConnection()); sollten Sie MySqlCommand cmd = new MySqlCommand(query, DBCon.GetConnection()); setzen

0
private void Initialize() 
    { 
     server = "localhost"; 
     database = "connectcsharptomysql"; 
     uid = "username"; 
     password = "password"; 
     string connectionString; 
     connectionString = "SERVER=" + server + ";" + "DATABASE=" + 
     database + ";" + "U`enter code here`ID=" + uid + ";" + "PASSWORD=" + password + ";"; 

     connection = new MySqlConnection(connectionString); 
    } 
+5

Sie haben dies von http://www.codeproject.com/Articles/43438/Connect-C-to-MySQL kopiert Dies ist bereits die Antwort von "bout Hamed Shams" – Elmue

-1

versuchen, diese Verbindung

string Server = "server"; 
string UserName = "username"; 
string Password = "password"; 
string Database = "database"; 
string Port = "port"; 


public readonly string config = string.Format("Server = {0}; Port = {1}; Database = {2}; Uid = {3}; Pwd = {4}; pooling = true; Allow Zero Datetime = False; Min Pool Size = 0; Max Pool Size = 200; ", Server, Port, Database, UserName, Password); 

using (var con = new MySqlConnection { ConnectionString = config }) 
{ 
    con.Open(); 
} 
+1

Dies wird nicht Sonderzeichen in den Benutzernamen oder Passwort korrekt; benutze 'MySqlConnectionStringBuilder' anstelle von' string.Format'. –

+0

@BradleyGrainger ja danke ** MR ** –

Verwandte Themen