2014-02-07 152 views
42

我很新來C#編程,但希望能夠訪問MySQL數據庫(沒有MS SQL的錢)如何連接到MySQL數據庫?

但我有一個問題;我知道你需要有用於開發C#應用程序的「MySQL連接器/ NET」和「用於Visual Studio的MySQL」,但安裝應用程序的人是否也需要它們? (難道我只能釋放連接器DLL與程序?)

感謝

編輯:都是他們所需要的最終用戶或只是連接器?他們還有什麼需要的嗎?

+3

是的,所有你需要做的是包與您編程的DLL,在運行程序時它應該已經在您的輸出調試/釋放文件夾中。 – ohmusama

+0

您也可以使用dotConnect組件連接到MySQL。嘗試免費的快遞或試用版 - http://www.devart.com/dotconnect/。 – Devart

+0

注意:用於Visual Studio的MySQL不適用於VS2010E –

回答

36

您可以使用軟件包管理器將其作爲軟件包添加,它是最簡單的方法。你不需要任何其他的東西來處理mysql數據庫。

或者你可以在下面的命令在軟件包管理控制檯

PM> Install-Package MySql.Data 

NUGET Mysql.Data

+0

如果您通過「管理NuGet軟件包」窗口進行搜索,請記住軟件包名稱是**區分大小寫**。對於來自名稱小寫的軟件包管理員的人來說,這可能不是一件明顯的事情。 –

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(); 
     }   
    } 
} 

實例運行:

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

如果您可能會遇到互聯網連接問題,並且您想嘗試連接,但這不起作用。刪除'if(_instance == null)'行。默認情況下也會產生'bool result = false',因爲它可能沒有連接到因特網連接問題和其他很多其他問題,不僅因爲數據庫名稱不會被設置。在這種情況下,if(String.IsNullOrEmpty(databaseName)) 返回false;'因爲它只會拋出異常,否則甚至可能返回true,這是不正確的。然而,upvoted,感謝乾淨的代碼。 – Brackets

2

看一下下面的代碼,我試了一下,結果發現: 而不是寫DBCon = DBConnection.Instance();你應該把DBConnection DBCon - new DBConnection();(這爲我工作)

和替代MySqlComman cmd = new MySqlComman(query, DBCon.GetConnection());你應該把MySqlCommand cmd = new MySqlCommand(query, DBCon.GetConnection());(它缺少d)

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

您已將此複製自http://www.codeproject.com/Articles/43438/Connect-C-to-MySQL這已經是「bout Hamed Shams」的答案 – Elmue

-1

嘗試這個連接

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

這不會在用戶名或密碼中轉義特殊字符密碼正確;使用'MySqlConnectionStringBuilder'而不是'string.Format'。 –

+0

@BradleyGrainger是的謝謝** MR ** –