일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #솔루션
- 사이트제작
- happycgi
- 해피씨지아이
- #쇼핑몰
- 솔루션
- php
- CSS
- #happycgi
- 홈페이지
- #image
- #홈페이지
- #해피CGI
- 웹솔루션
- 게시판
- 홈페이지제작
- #동영상
- #홈페이지제작
- 해피CGI
- CGIMALL
- javascript
- #CSS
- jquery
- #뉴스
- #이미지
- 쇼핑몰
- #cgimall
- #jQuery
- #업종별
- #웹솔루션
- Today
- Total
웹솔루션개발 22년 노하우! 해피CGI의 모든것
[해피CGI][cgimall] MySQL C++ CLASS version 1.0 본문
//+-----------------------------------------------------------------------------------------+
//
// MySQL C++ CLASS version 1.0
// written by Sunchul KIM.
// email : paranwave@korea.com
// homeapge : http://douner.pe.kr
// OS : Linux Redhat 7.1 , Windows 2000
// License : GPL !!!
//
//+-----------------------------------------------------------------------------------------+
Mysql 을 쉽게 사용할 수 있는 클래스 라이브러리입니다. C++ 플그램에서 Mysql 클라이언트를 만들
어야 했는데 클래스로 관련 라이브러리를 만들어 두면 편리할 것 같아서 만들어 보았습니다. 문법
은 밑에 올린 PHP 용 Mysql 클래스와 비슷하며 사용자가 에러를 점검하지 않아도 내부에서 예외처리
를 할 수 있도록 만들었습니다. 이번 클래스는 잡다한 기능은 제외하고 MySQL 에 접속, 쿼리 수행,
접속 끊기, DB 바꾸기의 기능이 있습니다. 추가적인 기능은 여러분이 쉽게 만들 수 있을 것이라고
생각합니다 ;)
테스트는 윈도우와 리눅스에서 이루어졌습니다.
윈도우즈 Visual C++ 6.0 에서는 operator[] 에 대한 ambiguous 에러가 발생하지 않았지만 리눅스
에서는 발생하더군요. 그래서 리눅스에서는 operator[int] 만을 사용할 수 있습니다. 윈도우즈에
서는 operator[int] 와 operator[char *] 를 이용할 수 있습니다.
아래는 쿼리를 했을 경우 필드 값에 접근하는 방법을 보여줍니다.
CMysql mysql;
mysql.Connect("localhost", "user", "pw1234", "mysql");
mysql.Query("select * from user");
cout << mysql[0] << mysql[1] << mysql[2] << endl;
cout << mysql["Host"] << mysql["User"] << mysql["Password"] << endl;(!윈도우즈만 실행됨!)
cout << mysql.Field(0) << mysql.Field(1) << mysql.Field(2) << endl;
cout << mysql.Field("Host") << mysql.Field("User") << mysql.Field("Password") << endl;
하지만 0 이란 값의 애매함으로 mysql[0] 의 두가지로 해석될 수 있습니다. 바로 int 형의 0 과
널포인터의 0, 이 때문에 컴파일러는 에러를 발생하게 됩니다. 해결책은 mysql[(int)0] 처럼 확
실하게 표현하는것입니다. 물론 mysql.Field() 함수도 같은 문제가 있습니다.
방법은 mysql.Field() 는 필드의 이름으로 접근하는 경우에만 사용하고 mysql[] 필드 인덱스 번호
로만 접근하는데 사용합니다. 그리고 윈도우즈에서 operator[const char *szString] 부분을 주석
처리합니다. 물론 CPP 화일에서도 관련 함수를 수정하여 줍니다. 수정하는 것은 그리 어렵지 않
습니다. 자료실에 올려진 소스는 리눅스 부분만 수정하였습니다. ;)
전체적으로 사용하는 예제입니다.
[윈도우]
int main()
{
int i=0;
CMysql mysql;
mysql.Connect("localhost","root","bluedog","mysql");
mysql.Query("select * from user");
mysql.Disconnect();
while(!mysql.IsEOF())
{
cout << mysql[(int)0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
mysql.Next();
}
mysql.First();
while(!mysql.IsEOF())
{
cout << "n" << mysql[(int)0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
}
mysql.Last();
while(!mysql.IsBOF())
{
cout << "p" << mysql[(int)0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
}
//cout << mysql[(int)0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
// mysql.Move(1000); //예외 발생
mysql.First();
mysql.Prev(); // 예외발생 , 제일 처음의 앞은 없다.
cout << " 0 " << mysql[(int)0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
cout << " 1 " << mysql[(int)0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
cout << " 2 " << mysql[(int)0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
return 0;
}
[리눅스]
int main()
{
int i=0;
CMysql mysql;
mysql.Connect("localhost","root","","mysql");
mysql.Query("select * from user");
mysql.Disconnect();
while(!mysql.IsEOF())
{
cout << mysql[0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
mysql.Next();
}
mysql.First();
while(!mysql.IsEOF())
{
cout << "n" << mysql[0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
}
mysql.Last();
while(!mysql.IsBOF())
{
cout << "p" << mysql[0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
}
//cout << mysql[(int)0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
mysql.First();
mysql.Prev();
cout << " 0 " << mysql[0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
cout << " 1 " << mysql[0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
cout << " 2 " << mysql[0] <<" "<< mysql[1] <<" "<< mysql[2] <<" "<< mysql[3] <
return 0;
}
★ 컴파일을 하려면 Mysql Library 가 필요합니다. http://www.mysql.com 에서 받으세요
★ 문의사항이 있을경우 이에일이나 홈페이지로 연락해주세요 ;)
'웹프로그램밍 자료실 > 데이터베이스 자료' 카테고리의 다른 글
[해피CGI][cgimall] 성준이의 MySQL2Pgsql Converter 0.1(Beta) (0) | 2016.12.20 |
---|---|
[해피CGI][cgimall] Easy4U MySql Editor (DB 관리툴) (0) | 2016.12.19 |
[해피CGI][cgimall] 영한/한영 사전 MySQL DB File (0) | 2016.12.13 |
[해피CGI][cgimall] Mysql 연습용 예제-마이콤 (0) | 2016.12.12 |
[해피CGI][cgimall] [DBMS] Mongo Web Admin (0) | 2016.12.07 |