Maison  >  Article  >  base de données  >  Comment se connecter à la base de données Mysql en C# ? Explication détaillée des exceptions de rapport d'erreurs et des ajouts, suppressions, modifications et requêtes

Comment se connecter à la base de données Mysql en C# ? Explication détaillée des exceptions de rapport d'erreurs et des ajouts, suppressions, modifications et requêtes

php是最好的语言
php是最好的语言original
2018-08-03 16:25:404718parcourir

Cet article parle de la connexion C# à la base de données Mysql. Un cas détaillé est joint ci-dessous. Lorsqu'il y a une erreur de connexion, MySqlConnection renverra une MySqlException,

comprenant 2 variables : Message et Numéro.

  1. Téléchargez mysql-connector-net-8.0.12 et installez-le, ajoutez Mysql.Data dans la référence.

  2. using MySql.Data.MySqlClient doit être écrit. Comme le montre la figure, Comment se connecter à la base de données Mysql en C# ? Explication détaillée des exceptions de rapport derreurs et des ajouts, suppressions, modifications et requêtes

est basé sur le principe que la base de données MySQL a été installée par défaut dans C:Program Files (x86). MySQL. Il est recommandé de sélectionner Connector lors de l'installation. NET 8.0.12, qui contient la bibliothèque de liens dynamiques pour connecter MySQL et C#.

Le document d'aide C:Program Files (x86)MySQLConnector.NET 8.0.12DocumentationConnectorNET.chm est la base principale pour moi pour écrire cet article. Parmi eux, sous Guide de l'utilisateur, Programmation est une introduction aux huit classes de la bibliothèque de liens dynamiques et Tutoriel est le code de cas.

L'essence de la connexion et de l'exploitation de la base de données est d'utiliser la bibliothèque de liens dynamiques MySql.Data.dll fournie par la base de données pour fonctionner. MySql.Data.dll fournit les 8 classes suivantes :

  • MySqlConnection : Connectez-vous à la base de données du serveur MySQL.

  • MySqlCommand : Exécuter une instruction SQL.

  • MySqlDataReader : contient les résultats de l'exécution de l'instruction SQL et fournit une méthode pour lire une ligne à partir des résultats.

  • MySqlTransaction : Représente une transaction SQL dans une base de données MySQL.

  • MySqlException : exception renvoyée lorsque MySQL signale une erreur.

  • MySqlCommandBuilder : génère automatiquement des commandes à table unique utilisées pour réconcilier les modifications apportées à un DataSet avec la base de données MySQL associée.

  • MySqlDataAdapter : représente un ensemble de commandes de données et une connexion à une base de données qui sont utilisées pour remplir un ensemble de données et mettre à jour une base de données MySQL.

  • MySqlHelper : classe d'assistance qui facilite le travail avec le fournisseur.

1. Ajouter un fichier de bibliothèque de liens dynamiques

Méthode 1 : Visual Studio, dans Projet (clic droit) - Gérer les packages NuGet (N), puis recherchez MySql.Data dans le navigateur et installez-le.

Méthode 2 : Lors de l'installation de la base de données MySQL, sélectionnez l'installation de Connector.NET 6.9, et ajoutez la v4.0 ou la v4.5 dans C:Program Files (x86)MySQLConnector.NET 8.0.12Assemblies Ajoutez la référence MySql.Data.dll au projet. v4.0 et v4.5 correspondent au numéro de version de .NET Framework dans le projet Visual Studio spécifique Properties-Application-Target Framework.

2. Établir une connexion (classe MySqlConnection)

= =

3. Intercepter les exceptions (classe MySqlException)

Lorsqu'il y a une erreur de connexion, MySqlConnection renverra une MySqlException, qui comprend 2 variables :

Message : un message qui décrit l'exception actuelle.

 Numéro : Le numéro d'erreur MySQL (0 : Impossible de se connecter au serveur. 1045 : Nom d'utilisateur et/ou mot de passe invalides.)

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 . Ajouter, supprimer, vérifier et modifier du code (classe MySqlCommand, classe MySqlDataReader)

 ExecuteReader - utilisé pour interroger la base de données. Le résultat de la requête est un objet MySqlDataReader renvoyé. MySqlDataReader contient les résultats de l'exécution de l'instruction SQL et fournit une méthode pour lire une ligne à partir des résultats.

 ExecuteNonQuery - utilisé pour insérer, mettre à jour et supprimer des données.

ExecuteScalar - lorsqu'il est utilisé pour interroger des données, renvoie requête valeur de la première ligne et de la première colonne du jeu de résultats, c'est-à-dire qu'une seule valeur est renvoyée.

  (1) Requête

a. Les conditions de requête sont fixes

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. les conditions de requête ne sont pas fixes

//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. La requête doit renvoyer une valeur

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) Insérer, supprimer , change

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++ 多线程封装

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn