Я новичок в программировании на C #, но хотел бы иметь доступ к базам данных MySQL (у меня нет денег на MS SQL)
Однако у меня есть один вопрос; Я знаю, что вам необходимы «MySQL connector / NET» и «MySQL для Visual Studio» для разработки приложения C #, но нужны ли они и тому, кто устанавливает приложение? (Можно ли просто выпустить DLL коннектора с программой?)
благодаря
РЕДАКТИРОВАТЬ: оба они требуются для конечного пользователя или только для коннектора? Что еще им понадобится?
c#
mysql
database
mysql-connector
user3282097
источник
источник
Ответы:
Установите
MySql.Data
пакет Oracle 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(); }
источник
if (_instance == null)
строку. Также makebool result = false
по умолчанию, потому что он может быть не подключен из-за проблем с подключением к Интернету и многих других, не только потому, что имя базы данных не будет установлено. В этом случае,if (String.IsNullOrEmpty(databaseName)) return false;
потому что в противном случае он просто вызовет исключение и может даже вернуть true, что было бы неверно. Тем не менее, проголосовали за, спасибо за чистый код.new DBConnection();
иprivate DBConnection()
)connection = null
наDBConnection.Close()
так как это синглтон , и вы можете использовать его сноваpublic bool IsConnect()
. Чтобы повторно использовать соединение послеif
оператора:else if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); }
в своем приложении вы можете просто сделать этоdbCon.IsConnect()
снова, после того как вы закрыли его после предыдущего запроса. Так что не делатьconnection = null;
вDBConnection.Close()
качестве предложил Роман, в противном случае повторного использования не будет работать.вы можете использовать диспетчер пакетов, чтобы добавить его как пакет, и это самый простой способ сделать. Для работы с базой данных mysql больше ничего не нужно.
Или вы можете запустить команду ниже в консоли диспетчера пакетов
PM> Install-Package MySql.Data
NUGET 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 (NO SSL MODE) с помощью события Click :
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(); } } }
источник
Посмотрев на приведенный ниже код, я попробовал его и обнаружил: вместо того, чтобы писать,
DBCon = 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); }
источник