대규모 그룹 회사에서 근무했을 뿐만 아니라 MySQL을 접할 수 있는 기회가 분명히 있을 것입니다. 비록 트랜잭션 처리 및 저장 프로시저를 지원하지 않더라도 MySQL이 제공하는 기능은 대부분의 요구 사항을 확실히 충족할 것입니다. , 간결합니다. MySQL은 어떤 경우에는 대규모 데이터베이스보다 속도가 훨씬 빠른 몇 가지 고유한 장점도 있습니다.
그렇다면 .NET에서 MySQL 데이터베이스에 액세스하는 방법은 무엇입니까? 아마도 많은 사람들이 즉시 다음과 같이 말할 것입니다. OLEDB를 사용하지만 실제로 .NET OleDb Data Provider를 사용하면 MySQL에 액세스할 수 없습니다. 이를 사용하면 시스템에서 "Net Data OLE DB Provider(System.Data.Odbc)는 액세스할 수 없습니다. MSDASQL 공급자(Odbc 드라이버용 Microsoft OLE DB 공급자)를 지원합니다. MySQLDriverCS의 작성자에 따르면 "소유자에 의해 폐기되었습니다"라는 이야기도 있을 수 있습니다.
다행히도 MySQL 데이터베이스에 액세스하는 두 가지 방법이 있습니다.
ODBC.NET 사용
ODBC.NET(전체 이름 ODBC .NET Data Provider)은 Microsoft 웹 사이트에서 다운로드해야 하는 무료 .NET Framework 추가 기능 구성 요소입니다. 다운로드 주소는 http://download.microsoft.com 입니다. /download/ dasdk/Install/1.0.4030.0/W98NT42KMeXP/EN-US/odbc_net.msi , 시스템에 MDAC 2.7 이상이 설치되어 있어야 합니다. 또한, MySQL용 ODBC 드라이버도 설치해야 합니다. 다운로드 주소는 http://www.mysql.com/downloads/api-myodbc-2.50.html 입니다. 또한 "ODBC"에서 DSN을 구성해야 합니다. 데이터 소스 관리자".
개체 디자인 측면에서 ODBC.NET은 OLEDB, SQL 등과 동일합니다. 즉, OdbcConnection, OdbcCommand, OdbcDataAdapter, OdbcDataReader를 사용하여 이전 OleDb를 대체하려는 경우 사용법은 완전히 동일합니다. NET Data Provider를 검색하고 바꾸는 방법으로 프로그램을 완전히 수정할 수 있습니다.
다음은 예제 코드입니다
.
{
문자열 constr = "DSN=MySQL;" + "UID=;"
conn = 새로운 OdbcConnection(constr);
conn.Open();
string query = "test.dbtable 값에 삽입10,'disksidkfsdi', 'asdfaf', 'adsfasdf')";
문자열 tmp = null;
OdbcCommand cmd = new OdbcCommand(query, conn);
for(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conn.Close();
query = "test.dbtable에서 * 선택";
OdbcCommand cmd2 = newOdbcCommand(query, conn);
conn.Open();
OdbcDataReader 리더 = cmd2.ExecuteReader();
동안(리더.읽기())
{
tmp = 리더[0].ToString();
tmp = 리더[1].ToString();
tmp = 리더[2].ToString();
tmp = 리더[3].ToString();
}
conn.Close();
query = "test.dbtable에서 삭제";
OdbcCommand cmd3 = newOdbcCommand(query, conn);
conn.Open();
cmd3.ExecuteNonQuery();
}
catch(예외예외)
{
MessageBox.Show(ex.메시지);
}
마지막으로
{
conn.Close();
}
C#으로 데이터베이스 애플리케이션을 작성해본 사람이라면 위의 코드가 데이터를 삽입하고 읽는 작업을 십만 번 수행하고 최종적으로 모든 데이터 레코드를 삭제한다는 것을 알아야 합니다.
MySQLDriverCS를 사용할 때
대부분의 사람들은 이 사실을 모를 수도 있습니다
. MySQLDriverCS는 MySQL 데이터베이스용 무료 오픈 소스 .NET 드라이버입니다.Sql .NET Data Provider가 SQL Server용인 것처럼 특별히 MySQL용으로 설계되었으며 MySQL .NET Data Provider라고 부를 수 있습니다. 이를 사용하기 위해 별도의 ODBC 데이터 소스를 설정할 필요는 없습니다. 기본적으로 MySQL에 연결할 수 있으면 MySQLDriverCS를 통해 액세스할 수 있습니다.
MySQLDriverCS는 SourceForge.NET의 프로젝트이지만 알 수 없는 이유로 중국에서는 이 웹 사이트에 액세스할 수 없습니다.
다음은 MySQLDriverCS를 사용한 코드 예제입니다.
MySQLConnection conn = null;
노력하다
{
string connstr = "데이터 소스=MySQL;비밀번호=루트;사용자 ID=루트;위치=localhost";
conn = new MySQLConnection(constr);
conn.Open();
string query = "test.dbtable 값(10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')에 삽입";
문자열 tmp = null;
MySQLCommand cmd = new MySQLCommand(query, conn);
for(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conn.Close();
query = "test.dbtable에서 * 선택";
MySQLCommand cmd2 = new MySQLCommand(query, conn);
conn.Open();
MySQLDataReader 리더 = cmd2.ExecuteReaderEx();
동안(리더.읽기())
{
tmp = 리더[0].ToString();
tmp = 리더[1].ToString();
tmp = 리더[2].ToString();
tmp = 리더[3].ToString();
}
conn.Close();
query = "test.dbtable에서 삭제";
MySQLCommand cmd3 = new MySQLCommand(query, conn);
conn.Open();
cmd3.ExecuteNonQuery();
}
catch(예외예외)
{
MessageBox.Show(ex.메시지);
}
마지막으로
{
conn.Close();
}
위 코드와 거의 똑같습니다. 또한, 한 가지 주목할 점은 Command의 ExecuteReader 메소드가 MySQLDriverCS에서 ExecuteReaderEx가 되었다는 점입니다. 자세한 소개는 첨부 문서를 참조하세요.
성능 테스트
실제로 위에서 작성한 코드의 목적을 본 독자도 있을 것입니다. 그런데 그 목적은 실제로 성능 테스트를 수행하는 것입니다. 위 두 코드 조각의 실행 시간은 ODBC.NET의 경우 약 24초, MySQLDriverCS의 경우 약 17초입니다. MySQL 전용 데이터 드라이버로서 MySQLDriverCS가 ODBC.NET보다 훨씬 빠른 것은 당연한 결과입니다.
요약
이 기사에서는 두 가지 MySQL 데이터베이스 액세스 방법을 소개하고 그 성능에 대한 간단한 테스트를 수행하여 독자들에게 MySQL 데이터베이스를 사용하여 .NET 애플리케이션을 개발할 때 귀중한 참고 자료가 되기를 바랍니다.