Ich bin sehr neu in der C # -Programmierung, möchte aber auf MySQL-Datenbanken zugreifen können (habe nicht das Geld für MS SQL)
Ich habe jedoch eine Frage; Ich weiß, dass Sie "MySQL Connector / NET" und "MySQL for Visual Studio" für die Entwicklung der C # -Anwendung benötigen, aber benötigt die Person, die die Anwendung installiert, diese auch? (Kann ich die Connector-DLL einfach mit dem Programm freigeben?)
Vielen Dank
BEARBEITEN: Werden beide für den Endbenutzer oder nur für den Anschluss benötigt? Gibt es noch etwas, was sie brauchen würden?
c#
mysql
database
mysql-connector
user3282097
quelle
quelle
Antworten:
Installieren Sie das
MySql.Data
NuGet-Paket von 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(); } } }
Beispiel:
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(); }
quelle
if (_instance == null)
Zeile löschen . Machen Sie auchbool result = false
standardmäßig, weil es möglicherweise nicht für Internetverbindungsprobleme und viele andere Probleme verbunden ist, nicht nur, weil der Datenbankname nicht festgelegt wurde. In diesem Fall,if (String.IsNullOrEmpty(databaseName)) return false;
weil es sonst nur eine Ausnahme auslöst und möglicherweise sogar true zurückgibt, was nicht korrekt wäre. Allerdings positiv bewertet, danke für den sauberen Code.new DBConnection();
undprivate DBConnection()
)connection = null
auf ,DBConnection.Close()
da es Singleton ist , und Sie können es wollen wieder verwendenpublic bool IsConnect()
. So verwenden Sie die Verbindung nach derif
Anweisung wieder:else if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); }
In Ihrer Anwendung können Sie sie einfachdbCon.IsConnect()
erneut ausführen, nachdem Sie sie nach einer vorherigen Abfrage geschlossen haben. So tut nichtconnection = null;
inDBConnection.Close()
dem Römer vorgeschlagen, sonst wird nicht funktionieren Wiederverwendung.Sie können den Paket-Manager verwenden, um ihn als Paket hinzuzufügen. Dies ist der einfachste Weg. Sie brauchen nichts anderes, um mit der MySQL-Datenbank zu arbeiten.
Oder Sie können den folgenden Befehl in der Package Manager-Konsole ausführen
PM> Install-Package MySql.Data
NUGET Mysql.Data
quelle
Sie müssen MySQLConnection NET von hier herunterladen .
Dann müssen Sie
MySql.Data.DLL
MSVisualStudio wie folgt hinzufügen :C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.12\Assemblies\v4.5.2
Wenn Sie mehr wissen möchten, besuchen Sie: Geben Sie hier die Linkbeschreibung ein
Um den Code zu verwenden, müssen Sie die Bibliothek importieren:
using MySql.Data.MySqlClient;
Ein Beispiel mit Verbindung zur MySQL-Datenbank (NO SSL MODE) mittels Click-Ereignis :
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(); } } }
quelle
Beim Betrachten des folgenden Codes habe ich es versucht und festgestellt: Anstatt zu schreiben
DBCon = DBConnection.Instance();
, sollten Sie setzenDBConnection DBCon - new DBConnection();
(das hat bei mir funktioniert)und statt
MySqlComman cmd = new MySqlComman(query, DBCon.GetConnection());
du solltest setzenMySqlCommand cmd = new MySqlCommand(query, DBCon.GetConnection());
(es fehlt das d)quelle
Eine weitere zu berücksichtigende Bibliothek ist MySqlConnector, https://mysqlconnector.net/ . Mysql.Data steht unter einer GPL-Lizenz, während MySqlConnector MIT ist.
quelle
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); }
quelle