我刚开始学习C#编程,想要访问 MySQL
数据库。
我知道在C#开发中需要使用 MySQL connector/NET
和 MySQL for Visual Studio
。
我需要将它们安装到我的应用程序中吗?
是否可以只发布连接器DLL文件而不安装它们?
更新:
终端用户需要同时安装这两个东西吗?还是只需要连接器?
还需要安装其他什么东西吗?
我刚开始学习C#编程,想要访问 MySQL
数据库。
我知道在C#开发中需要使用 MySQL connector/NET
和 MySQL for Visual Studio
。
我需要将它们安装到我的应用程序中吗?
是否可以只发布连接器DLL文件而不安装它们?
更新:
终端用户需要同时安装这两个东西吗?还是只需要连接器?
还需要安装其他什么东西吗?
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; }
public 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();
}
new DBConnection();
和 private DBConnection()
) - Soleilpublic bool IsConnect()
进行了一些扩展。为了重复使用连接,在 if
语句之后:
else if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); }
在先前的查询中关闭后,您可以再次执行 dbCon.IsConnect()
。
因此,在 DBConnection.Close()
中不要像Roman建议的那样执行 connection = null;
,否则重用将无法工作。 - LarphoidError CS0103 The name 'databaseName' does not exist in the current context
- Alex G您可以使用包管理器将其添加为软件包,这是最简单的方法。您不需要任何其他东西来处理MySQL数据库。
或者您可以在包管理器控制台中运行此命令:
PM> Install-Package MySql.Data
您需要从此处下载MySQLConnection NET。
然后,您需要像这样将MySql.Data.DLL
添加到MSVisualStudio中:
C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.12\Assemblies\v4.5.2
如果您想了解更多信息,请访问:此链接
要在代码中使用,您必须导入库:
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();
}
}
}
conexion
。 - ArkyoDBCon = DBConnection.Instance();
改成 DBConnection DBCon - new DBConnection();
(这个对我有效)。MySqlComman cmd = new MySqlComman(query, DBCon.GetConnection());
修改为 MySqlCommand cmd = new MySqlCommand(query, DBCon.GetConnection());
(d漏写了)。另一个需要考虑的库是MySqlConnector,https://mysqlconnector.net/。Mysql.Data使用GPL许可证,而MySqlConnector使用MIT许可证。
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);
}