Soy muy nuevo en la programación C # pero me gustaría poder acceder a las bases de datos MySQL (no tengo dinero para MS SQL)
Sin embargo, tengo una pregunta; Sé que debe tener "conector MySQL / NET" y "MySQL para Visual Studio" para desarrollar la aplicación C #, pero ¿la persona que instala la aplicación también los requiere? (¿Es posible que pueda liberar la DLL del conector con el programa?)
Gracias
EDITAR: ¿Ambos son necesarios para el usuario final o solo el conector? ¿Hay algo más que necesiten?
c#
mysql
database
mysql-connector
user3282097
fuente
fuente
Respuestas:
Instale el
MySql.Data
paquete NuGet de Oracle .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(); } } }
Ejemplo:
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(); }
fuente
if (_instance == null)
línea. También lo hacebool result = false
de forma predeterminada porque es posible que no esté conectado por problemas de conexión a Internet y muchos otros en realidad, no solo porque el nombre de la base de datos no se establecería. En ese caso,if (String.IsNullOrEmpty(databaseName)) return false;
porque de lo contrario, solo lanzará una excepción e incluso podría devolver verdadero, lo que no sería correcto. Sin embargo, votó a favor, gracias por el código limpio.new DBConnection();
yprivate DBConnection()
)connection = null
enDBConnection.Close()
ya que es Singleton y es posible que desee volver a utilizarlopublic bool IsConnect()
. Para reutilizar la conexión, después de laif
declaración:else if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); }
En su aplicación, puede hacerlodbCon.IsConnect()
nuevamente, después de haberla cerrado después de una consulta anterior. Así que no lo hagaconnection = null;
enDBConnection.Close()
como se sugiere romana, de lo contrario no funcionará la reutilización.puede usar el Administrador de paquetes para agregarlo como paquete y es la forma más fácil de hacerlo. No necesita nada más para trabajar con la base de datos mysql.
O puede ejecutar el siguiente comando en Package Manager Console
PM> Install-Package MySql.Data
NUGET Mysql.Data
fuente
Debe descargar MySQLConnection NET desde aquí .
Entonces necesitas agregar
MySql.Data.DLL
a MSVisualStudio así:C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.12\Assemblies\v4.5.2
Si quieres saber más visita: ingrese la descripción del enlace aquí
Para usar en el código debe importar la biblioteca:
using MySql.Data.MySqlClient;
Un ejemplo de conexión a la base de datos Mysql (SIN MODO SSL) mediante el evento 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(); } } }
fuente
Mirando el código a continuación, lo probé y encontré: En lugar de escribir
DBCon = DBConnection.Instance();
, debe ponerDBConnection DBCon - new DBConnection();
(Eso funcionó para mí)y en lugar de
MySqlComman cmd = new MySqlComman(query, DBCon.GetConnection());
ponerMySqlCommand cmd = new MySqlCommand(query, DBCon.GetConnection());
(falta la d)fuente
Otra biblioteca a considerar es MySqlConnector, https://mysqlconnector.net/ . Mysql.Data está bajo una licencia GPL, mientras que MySqlConnector es MIT.
fuente
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); }
fuente