C# 如何连接MySQL数据库?
刚接触C#编程,我希望能够访问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
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))返回false因为它只会抛出一个异常,否则甚至可能返回不正确的true。但是,感谢您提供了干净的代码。为什么您有一个带有私有构造函数的“循环”引用?(new DBConnection();
和private DBConnection()
)您必须在DBConnection.Close()
上执行connection=null
,因为它是单例的,您可能希望重新使用它。这是一个很好的开始!我已经对public bool IsConnect()
进行了一些扩展。要重用连接,在if
语句之后:else if(connection.State==System.Data.ConnectionState.Closed){connection.Open();}
在应用程序中,您只需在上一次查询后关闭它,然后再次执行dbCon.IsConnect()
。所以不要做connection=null按照Roman的建议,在DBConnection.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();
}
}
}