Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何连接MySQL数据库?_C#_Mysql_Nuget Package_Mysql Connector - Fatal编程技术网

C# 如何连接MySQL数据库?

C# 如何连接MySQL数据库?,c#,mysql,nuget-package,mysql-connector,C#,Mysql,Nuget Package,Mysql Connector,刚接触C#编程,我希望能够访问MySQL数据库 我知道C#开发需要MySQL connector/NET和MySQL for visualstudio 我需要将它们安装到我的应用程序中吗 我可以用程序释放连接器DLL吗 更新: 最终用户或仅连接器需要这两者吗 他们还需要什么吗?您可以使用软件包管理器将其添加为软件包,这是最简单的方法。使用mysql数据库不需要其他任何东西 也可以在PackageManager控制台中运行下面的命令 PM> Install-Package MySql.Dat

刚接触C#编程,我希望能够访问
MySQL
数据库

我知道C#开发需要
MySQL connector/NET
MySQL for visualstudio

我需要将它们安装到我的应用程序中吗
我可以用程序释放连接器DLL吗

更新:
最终用户或仅连接器需要这两者吗

他们还需要什么吗?

您可以使用软件包管理器将其添加为软件包,这是最简单的方法。使用mysql数据库不需要其他任何东西

也可以在PackageManager控制台中运行下面的命令

PM> Install-Package MySql.Data

安装Oracle的
MySql.Data
NuGet软件包

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

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

        public string Server { get; set; }
        public string DatabaseName { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }

        private MySqlConnection Connection { get; set;}

        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={0}; database={1}; UID={2}; password={3}", Server, DatabaseName, UserName, Password);
                Connection = new MySqlConnection(connstring);
                Connection.Open();
            }
    
            return true;
        }
    
        public void Close()
        {
            Connection.Close();
        }        
    }
}
例如:

var dbCon = DBConnection.Instance();
dbCon.Server = "YourServer";
dbCon.DatabaseName = "YourDatabase";
dbCon.UserName = "YourUsername";
dbCon.Password = "YourPassword";
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();
}

查看下面的代码,我尝试了一下,发现: 而不是编写
DBCon=DBConnection.Instance()
您应该放置
DBConnection DBCon-newdbconnection()(对我有用)


而不是
MySqlComman cmd=newmysqlcomman(query,DBCon.GetConnection())
您应该放置
MySqlCommand cmd=newmysqlcommand(query,DBCon.GetConnection())(缺少d)

您必须从下载MySQLConnection NET

然后您需要向MSVisualStudio添加
MySql.Data.DLL
,如下所示:

  • 打开菜单项目
  • 参考文献
  • 浏览到
    C:\ProgramFiles(x86)\MySQL\MySQL Connector Net 8.0.12\Assembly\v4.5.2
  • 添加MySql.Data.dll
  • 如果您想了解更多信息,请访问:

    要在代码中使用,必须导入库:

    using MySql.Data.MySqlClient;
    
    通过点击事件连接到Mysql数据库(无SSL模式)的示例:

    using System;
    using System.Windows;
    using MySql.Data.MySqlClient;
    
    
    namespace Deportes_WPF
    {
    
    public partial class Login : Window
    {
        private MySqlConnection connection;
        private string server;
        private string database;
        private string user;
        private string password;
        private string port;
        private string connectionString;
        private string sslM;
    
        public Login()
        {
            InitializeComponent();
    
            server = "server_name";
            database = "database_name";
            user = "user_id";
            password = "password";
            port = "3306";
            sslM = "none";
    
            connectionString = String.Format("server={0};port={1};user id={2}; password={3}; database={4}; SslMode={5}", server, port, user, password, database, sslM);
    
            connection = new MySqlConnection(connectionString);
        }
    
        private void conexion()
        {
            try
            {
                connection.Open();
    
                MessageBox.Show("successful connection");
    
                connection.Close();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message + connectionString);
            }
        }
    
        private void btn1_Click(object sender, RoutedEventArgs e)
        {
            conexion();
        }
      }
    
    }
    

    另一个图书馆要考虑的是MySqlConnector。Mysql.Data是GPL许可证下的,而MySqlConnector是MIT。

    是的,您只需将DLL与您的程序打包即可,当您运行程序时,它应该已经在输出调试/发布文件夹中。注意:MySQL for Visual Studio在VS2010EAs中不起作用,因为@EnriqueSanMartín的上述说明,并且已删除对Microsoft Visual Studio 2010的支持。请参阅此处,如果您通过SSH进行搜索,是否需要通过SSH连接到MySQL,而不是直接在端口3306上连接“Manage NuGet Packages”窗口,请记住包名区分大小写。对于来自使用小写名称的包管理器的人来说,这可能不是一件显而易见的事情。您从中复制了这一点,这已经是“bout Hamed Shams”的答案了“我同意,@Elmue-如果您可能会遇到internet连接问题,并且希望在连接之前一直尝试,那么这将不起作用。删除
    if(\u instance==null)
    行。另外,默认设置为
    bool result=false
    ,因为它可能因internet连接问题和其他许多问题而未连接,而不仅仅是因为数据库名称未设置。在这种情况下,
    if(String.IsNullOrEmpty(databaseName))返回falsenew DBConnection();
    private DBConnection()
    )您必须在
    DBConnection.Close()
    上执行
    connection=null
    ,因为它是单例的,您可能希望重新使用它。这是一个很好的开始!我已经对
    public bool IsConnect()
    进行了一些扩展。要重用连接,在
    if
    语句之后:
    else if(connection.State==System.Data.ConnectionState.Closed){connection.Open();}
    在应用程序中,您只需在上一次查询后关闭它,然后再次执行
    dbCon.IsConnect()
    。所以不要做
    connection=nullDBConnection.Close()
    中使用code>,否则重用将不起作用。回答得很好,但我如何连接到某个端口。我的网络是dev、test和live数据都在同一台服务器上,但在不同的端口上。如何仅连接到一个端口。
    using System;
    using System.Windows;
    using MySql.Data.MySqlClient;
    
    
    namespace Deportes_WPF
    {
    
    public partial class Login : Window
    {
        private MySqlConnection connection;
        private string server;
        private string database;
        private string user;
        private string password;
        private string port;
        private string connectionString;
        private string sslM;
    
        public Login()
        {
            InitializeComponent();
    
            server = "server_name";
            database = "database_name";
            user = "user_id";
            password = "password";
            port = "3306";
            sslM = "none";
    
            connectionString = String.Format("server={0};port={1};user id={2}; password={3}; database={4}; SslMode={5}", server, port, user, password, database, sslM);
    
            connection = new MySqlConnection(connectionString);
        }
    
        private void conexion()
        {
            try
            {
                connection.Open();
    
                MessageBox.Show("successful connection");
    
                connection.Close();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message + connectionString);
            }
        }
    
        private void btn1_Click(object sender, RoutedEventArgs e)
        {
            conexion();
        }
      }
    
    }