>  기사  >  데이터 베이스  >  C#에서 MySQL 데이터베이스에 연결하는 방법은 무엇입니까? 오류 보고 예외사항 및 추가, 삭제, 수정, 조회에 대한 자세한 설명

C#에서 MySQL 데이터베이스에 연결하는 방법은 무엇입니까? 오류 보고 예외사항 및 추가, 삭제, 수정, 조회에 대한 자세한 설명

php是最好的语言
php是最好的语言원래의
2018-08-03 16:25:404696검색

이 기사에서는 MySQL 데이터베이스에 연결하는 C#에 대해 설명합니다. 연결 오류가 발생하면 MySqlConnection은 메시지 및 2개의 변수를 포함하는 MySqlException,

을 반환합니다. 숫자.

  1. mysql-connector-net-8.0.12를 다운로드하여 설치하고 참조에 Mysql.Data를 추가합니다.

  2. using MySql.Data.MySqlClient;를 작성해야 합니다. 그림과 같이 C#에서 MySQL 데이터베이스에 연결하는 방법은 무엇입니까? 오류 보고 예외사항 및 추가, 삭제, 수정, 조회에 대한 자세한 설명

은 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 데이터베이스를 업데이트하는 데 사용되는 데이터 명령 집합과 데이터베이스 연결을 나타냅니다. 🎜#

  • MySqlHelper: 공급자와 더 쉽게 작업할 수 있게 해주는 도우미 클래스입니다.

    1. 동적 링크 라이브러리 파일 추가

  • 방법 1: Visual Studio, 프로젝트에서(오른쪽 클릭) - NuGet 프로그램 패키지 관리(N) 그런 다음 브라우저에서 MySql.Data를 검색합니다. 그리고 설치하세요.

  • 방법 2: MySQL 데이터베이스를 설치할 때 Connector.NET 6.9 설치를 선택하고 v4.0을 C:Program Files (x86)MySQLConnector.NET 8.0에 넣습니다. .12Assemblies 또는 v4.5의 MySql.Data.dll에 대한 참조를 프로젝트에 추가합니다. v4.0 및 v4.5는 특정 Visual Studio 프로젝트 속성-응용 프로그램-대상 프레임워크의 .NET Framework 버전 번호에 해당합니다.
  • 2. 연결 설정(MySqlConnection 클래스)

  • = =

3. # 🎜🎜#

연결 오류가 있는 경우 MySqlConnection은 2개의 변수를 포함하는 MySqlException을 반환합니다.

메시지: 현재 예외를 설명하는 메시지 🎜#

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 클래스)

# 🎜🎜# ExecuteReader ——데이터베이스를 쿼리하는 데 사용됩니다. 쿼리 결과는 반환된 MySqlDataReader 개체입니다. MySqlDataReader는 SQL 문 실행 결과를 포함하고 결과에서 행을 읽는 방법을 제공합니다.

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判断。执行失败不返回任何数据,报错,下面代码都不执行

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

위 내용은 C#에서 MySQL 데이터베이스에 연결하는 방법은 무엇입니까? 오류 보고 예외사항 및 추가, 삭제, 수정, 조회에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.