이 기사에서는 MySQL 데이터베이스에 연결하는 C#에 대해 설명합니다. 연결 오류가 발생하면 MySqlConnection은 메시지 및 2개의 변수를 포함하는 MySqlException,
을 반환합니다. 숫자.
mysql-connector-net-8.0.12를 다운로드하여 설치하고 참조에 Mysql.Data를 추가합니다.
using MySql.Data.MySqlClient;를 작성해야 합니다. 그림과 같이
은 MySQL 데이터베이스가 기본적으로 설치되어 있다는 전제하에 C로 설치됩니다. 프로그램 파일(x86)MySQL 설치 시 MySQL과 C# 연결을 위한 동적 링크 라이브러리가 포함된 Connector.NET 8.0.12 설치를 선택하는 것이 좋습니다.
도움말 문서 C:Program Files (x86)MySQLConnector.NET 8.0.12DocumentationConnectorNET.chm은 제가 이 글을 쓰는 주요 기반입니다. 그 중 사용자 가이드 아래 프로그래밍에는 동적 링크 라이브러리의 8개 클래스에 대한 소개가 있고, 튜토리얼에는 케이스 코드가 나와 있습니다.
데이터베이스 접속 및 운영의 핵심은 데이터베이스에서 제공하는 동적링크 라이브러리인 MySql.Data.dll을 이용하여 운영하는 것입니다. MySql.Data.dll은 다음 8가지 클래스를 제공합니다.
MySqlConnection: MySQL 서버 데이터베이스에 연결합니다.
MySqlCommand: SQL 문을 실행합니다.
MySqlDataReader: SQL 문 실행 결과를 포함하고 결과에서 행을 읽는 방법을 제공합니다.
MySqlTransaction: MySQL 데이터베이스의 SQL 트랜잭션을 나타냅니다.
MySqlException: MySQL이 오류를 보고할 때 예외가 반환되었습니다. MySqlCommandBuilder: 연결된 MySQL 데이터베이스와 함께 DataSet의 변경 사항을 조정하는 데 사용되는 단일 테이블 명령을 자동으로 생성합니다. MySqlDataAdapter: 데이터 세트를 채우고 MySQL 데이터베이스를 업데이트하는 데 사용되는 데이터 명령 집합과 데이터베이스 연결을 나타냅니다. 🎜#
1. 동적 링크 라이브러리 파일 추가
방법 1: Visual Studio, 프로젝트에서(오른쪽 클릭) - NuGet 프로그램 패키지 관리(N) 그런 다음 브라우저에서 MySql.Data를 검색합니다. 그리고 설치하세요.
2. 연결 설정(MySqlConnection 클래스)
= =
메시지: 현재 예외를 설명하는 메시지 🎜#
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. 코드 추가, 삭제 및 수정(MySqlCommand 클래스, MySqlDataReader 클래스)
ExecuteNonQuery - 데이터를 삽입, 업데이트 및 삭제하는 데 사용됩니다.
ExecuteScalar ——데이터 쿼리에 사용되는 경우
을 반환합니다.(1) 쿼리
a. 쿼리 조건이 수정되었습니다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. 쿼리 조건이 수정되지 않았습니다//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. 쿼리에서 값을 반환해야 합니다
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) 삽입, 삭제, 변경
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判断。执行失败不返回任何数据,报错,下面代码都不执行
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#에서 MySQL 데이터베이스에 연결하는 방법은 무엇입니까? 오류 보고 예외사항 및 추가, 삭제, 수정, 조회에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!