Heim  >  Artikel  >  Datenbank  >  Wie stelle ich in C# eine Verbindung zur MySQL-Datenbank her? Ausführliche Erläuterung der Ausnahmen bei der Fehlerberichterstattung sowie des Hinzufügens, Löschens, Änderns und Abfragens

Wie stelle ich in C# eine Verbindung zur MySQL-Datenbank her? Ausführliche Erläuterung der Ausnahmen bei der Fehlerberichterstattung sowie des Hinzufügens, Löschens, Änderns und Abfragens

php是最好的语言
php是最好的语言Original
2018-08-03 16:25:404625Durchsuche

In diesem Artikel geht es um die Verbindung von C# mit der MySQL-Datenbank. Wenn ein Verbindungsfehler auftritt, gibt MySqlConnection eine MySqlException zurück,

einschließlich zweier Variablen: Message und Number.

  1. Laden Sie mysql-connector-net-8.0.12 herunter und installieren Sie es. Fügen Sie Mysql.Data in der Referenz hinzu.

  2. using MySql.Data.MySqlClient; Wie in der Abbildung gezeigt, basiert Wie stelle ich in C# eine Verbindung zur MySQL-Datenbank her? Ausführliche Erläuterung der Ausnahmen bei der Fehlerberichterstattung sowie des Hinzufügens, Löschens, Änderns und Abfragens

auf der Voraussetzung, dass die MySQL-Datenbank standardmäßig in C:Programme (x86) installiert wurde. Es wird empfohlen, bei der Installation den Connector NET 8.0.12 auszuwählen, der die dynamische Linkbibliothek für die Verbindung von MySQL und C# enthält.

Hilfedokument C:Program Files (x86)MySQLConnector.NET 8.0.12DocumentationConnectorNET.chm ist für mich die Hauptgrundlage, um diesen Artikel zu schreiben. Darunter befindet sich im Benutzerhandbuch „Programmierung“ eine Einführung in die acht Klassen der Dynamic Link Library und im Tutorial der Fallcode.

Der Kern der Verbindung mit der Datenbank und deren Betrieb besteht darin, die von der Datenbank bereitgestellte dynamische Linkbibliothek MySql.Data.dll für den Betrieb zu verwenden. MySql.Data.dll stellt die folgenden 8 Klassen bereit:

  • MySqlConnection: Verbindung zur MySQL-Serverdatenbank herstellen.

  • MySqlCommand: Führen Sie eine SQL-Anweisung aus.

  • MySqlDataReader: Enthält die Ergebnisse der SQL-Anweisungsausführung und stellt eine Methode zum Lesen einer Zeile aus den Ergebnissen bereit.

  • MySqlTransaction: Stellt eine SQL-Transaktion in einer MySQL-Datenbank dar.

  • MySqlException: Ausnahme wird zurückgegeben, wenn MySQL einen Fehler meldet.

  • MySqlCommandBuilder: Generiert automatisch Einzeltabellenbefehle, die zum Abgleichen von an einem DataSet vorgenommenen Änderungen mit der zugehörigen MySQL-Datenbank verwendet werden.

  • MySqlDataAdapter: Stellt eine Reihe von Datenbefehlen und eine Datenbankverbindung dar, die zum Füllen eines Datensatzes und zum Aktualisieren einer MySQL-Datenbank verwendet werden.

  • MySqlHelper: Hilfsklasse, die die Arbeit mit dem Anbieter erleichtert.

1. Dynamische Linkbibliotheksdatei hinzufügen

Methode 1: Visual Studio, im Projekt (Rechtsklick) – NuGet-Pakete verwalten (N), dann im Browser nach MySql.Data suchen und installieren.

Methode 2: Wählen Sie bei der Installation der Datenbank MySQL die Installation von Connector.NET 6.9 aus und fügen Sie v4.0 oder v4.5 in C:Programme (x86)MySQLConnector.NET hinzu 8.0.12Assemblies Fügen Sie die MySql.Data.dll-Referenz zum Projekt hinzu. v4.0 und v4.5 entsprechen der .NET Framework-Versionsnummer im spezifischen Visual Studio-Projekt Properties-Application-Target Framework.

2. Eine Verbindung herstellen (MySqlConnection-Klasse)

= =

3. Ausnahmen abfangen (MySqlException-Klasse)

Wenn ein Verbindungsfehler auftritt, gibt MySqlConnection eine MySqlException zurück, die zwei Variablen enthält:

Nachricht: Eine Nachricht, die die aktuelle Ausnahme beschreibt.

Nummer: Die MySQL-Fehlernummer (0: Verbindung zum Server nicht möglich. 1045: Ungültiger Benutzername und/oder Passwort.)

catch (MySqlException ex)
{    switch (ex.Number)
    {        case 0:
        Console.WriteLine("Cannot connect to server.  Contact administrator");        break;    case 1045:
        Console.WriteLine("Invalid username/password, please try again");        break;
    }
}

4 , Löschen und Ändern (MySqlCommand-Klasse, MySqlDataReader-Klasse)

 ExecuteReader – wird zum Abfragen der Datenbank verwendet. Das Abfrageergebnis ist ein zurückgegebenes MySqlDataReader-Objekt. MySqlDataReader enthält die Ergebnisse der SQL-Anweisungsausführung und stellt eine Methode zum Lesen einer Zeile aus den Ergebnissen bereit.

 ExecuteNonQuery – wird zum Einfügen, Aktualisieren und Löschen von Daten verwendet.

ExecuteScalar – wenn es zum Abfragen von Daten verwendet wird, wird query The zurückgegeben Wert der ersten Zeile und ersten Spalte im Ergebnissatz, d. h. es wird nur ein Wert zurückgegeben.

 (1) Abfrage

a Die Abfragebedingungen sind festgelegt

string sql= "select * from user";
MySqlCommand cmd = new MySqlCommand(sql,conn);
MySqlDataReader reader =cmd.ExecuteReader();//执行ExecuteReader()返回一个MySqlDataReader对象while (reader.Read())//初始索引是-1,执行读取下一行数据,返回值是bool{    //Console.WriteLine(reader[0].ToString() + reader[1].ToString() + reader[2].ToString());    //Console.WriteLine(reader.GetInt32(0)+reader.GetString(1)+reader.GetString(2));
    Console.WriteLine(reader.GetInt32("userid") + reader.GetString("username") + reader.GetString("password"));//"userid"是数据库对应的列名,推荐这种方式}

b sind nicht festgelegt

//string sql = "select * from user where username='"+username+"' and password='"+password+"'"; //我们自己按照查询条件去组拼string sql = "select * from user where username=@para1 and password=@para2";//在sql语句中定义parameter,然后再给parameter赋值MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("para1", username);
cmd.Parameters.AddWithValue("para2", password);

MySqlDataReader reader = cmd.ExecuteReader();if (reader.Read())//如果用户名和密码正确则能查询到一条语句,即读取下一行返回true{    return true;
}

c. Die Abfrage muss einen Wert zurückgeben

string sql = "select count(*) from user";
MySqlCommand cmd = new MySqlCommand(sql, conn);
Object result=cmd.ExecuteScalar();//执行查询,并返回查询结果集中第一行的第一列。所有其他的列和行将被忽略。select语句无记录返回时,ExecuteScalar()返回NULL值if (result != null)
{    int count = int.Parse(result.ToString());
}

(2) Einfügen, löschen, ändern

string sql = "insert into user(username,password,registerdate) values('啊宽','123','"+DateTime.Now+"')";//string sql = "delete from user where userid='9'";//string sql = "update user set username='啊哈',password='123' where userid='8'";MySqlCommand cmd = new MySqlCommand(sql,conn);int result =cmd.ExecuteNonQuery();//3.执行插入、删除、更改语句。执行成功返回受影响的数据的行数,返回1可做true判断。执行失败不返回任何数据,报错,下面代码都不执行

 5.事务(MySqlTransaction类)

String connetStr = "server=127.0.0.1;user=root;password=root;database=minecraftdb;";
MySqlConnection conn = new MySqlConnection(connetStr);
conn.Open();//必须打开通道之后才能开始事务MySqlTransaction transaction = conn.BeginTransaction();//事务必须在try外面赋值不然catch里的transaction会报错:未赋值Console.WriteLine("已经建立连接");try{    string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day;    string sql1= "insert into user(username,password,registerdate) values('啊宽','123','" + date + "')";
    MySqlCommand cmd1 = new MySqlCommand(sql1,conn);
    cmd1.ExecuteNonQuery();    string sql2 = "insert into user(username,password,registerdate) values('啊宽','123','" + date + "')";
    MySqlCommand cmd2 = new MySqlCommand(sql2, conn);
    cmd2.ExecuteNonQuery();
}catch (MySqlException ex)
{
    Console.WriteLine(ex.Message);
    transaction.Rollback();//事务ExecuteNonQuery()执行失败报错,username被设置unique
    conn.Close();
}finally{    if (conn.State != ConnectionState.Closed)
    {
        transaction.Commit();//事务要么回滚要么提交,即Rollback()与Commit()只能执行一个
        conn.Close();
    }
}

  结语:连接数据库、操作数据库,本质是利用数据库提供的动态链接库MySql.Data.dll进行操作。动态链接库中的8个类上面常用操作只用到了类1-5,类6-8 的相关操作未涉及, 大家可以去看帮助文档C:\Program Files (x86)\MySQL\Connector.NET 8.0.12\Documentation\ConnectorNET.chm学习。

相关文章:

C# Using MySQL

mysql Connector C/C++ 多线程封装

Das obige ist der detaillierte Inhalt vonWie stelle ich in C# eine Verbindung zur MySQL-Datenbank her? Ausführliche Erläuterung der Ausnahmen bei der Fehlerberichterstattung sowie des Hinzufügens, Löschens, Änderns und Abfragens. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn