VC++6.0接続MySQL

3938 ワード

一、MySQLのインストール
mysql-5.5のインストールを考慮して、「完全インストール」(VCコンパイル時に必要なヘッダファイルなどをインストールする場合にのみ)を選択することに注意してください.インストール後にサーバ構成が行われ、サーバログインパスワードを設定したり、パスワードを設定したりすることができます.二、VC 6.0の設定
(1)VC 6を開く.0ツールバーToolsメニューの下にあるOptionsオプションで、Directoriesのラベルページの右側にある「Show directories for:」ドロップダウンリストから「Includefiles」を選択し、中間リストボックスにMySQLをローカルにインストールするincludeディレクトリパスを追加します.(私のはD:Program FilesMySQLMySQL Server 5.0includeです).
(2)上記の「Show directories for:」ドロップダウンリストで「Library files」を選択し、MySQLをローカルにインストールするLibディレクトリパスを追加します.Libディレクトリの下にはdebugとoptの2つのディレクトリがあります.debugを選択することをお勧めします.(私のはD:Program FilesMySQLMySQL Server 5.0libdebug)です.
(3)「プロジェクトsettings->Link:Object/library modules」に「libmysql.lib」を追加する.
(4)stdafx.hには以下の内容が追加されている.
#include "mysql.h"
#include "winsock.h" //       ,      #include "mysql.h"   #pragma comment(lib,"libmySQL.lib") //             ,       

(5)「libmySQL.lib、libmySQL.dll」を、あなたが構築したプロジェクトのディレクトリにコピーすることをお勧めします.
三、データベース、テーブルの作成
[スタート->すべてのプログラム->MySQL->MySQL->MySQL Server 5.0->MySQL Command Line Client.exe]を開き、パスワードを設定せずにそのまま戻ると、サーバの起動に成功するように求められます.
mysql> SHOW DATABASES;//        ,       “;”     
mysql> CREATE DATABASE mydb;//     mydb
mysql> USE mydb;//          mydb
mysql> SHOW TABLES; //        
mysql> CREATE TABLE mytable (username VARCHAR(100), visitelist VARCHAR(200),                                 remark VARCHAR(200));//     mytable:    ;    ;  
mysql> DESCRIBE mytable;//      

四、VCプログラミング
MYSQL mysql; //          MYSQL *conn = new MYSQL; MYSQL_RES *res = new MYSQL_RES;  new    

mysql_init (&mysql);
if(!mysql_real_connect(&mysql,"localhost","root",NULL,"mydb",3306,NULL,0))  {//mydb         ,3306    ,      
AfxMessageBox("       "); 
return FALSE;
}

(1)追加機能の実現
CString strUsername,strList,strRemark,strSQL;
strSQL.Format("insert into mytable(username,visitelist,remark) values(\'%s\',\'%s\',\'%s\')",                                        strUsername,strList,strRemark);//         ,      \'\'
if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0){ 
AfxMessageBox("    "); 
}

(2)修正機能の実現
CString strUsername,strList,strRemark,strSQL,str_PreName;//str_PreName          ,       
strSQL.Format("update mytable set username=\'%s\',visitelist=\'%s\',                              remark=\'%s\' where username=\'%s\'",strUsername,strList,strRemark,str_PreName);
if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0){ 
AfxMessageBox("    "); 
}

(3)削除機能の実現
CString strSQL;
strSQL.Format("delete from mytable where username=\'%s\'",str_PreName);//    \'\'
if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0){ 
AfxMessageBox("    "); 
}

(4)表の内容をCListCtrlコントロールm_に読み込むlist
m_list.DeleteAllItems();
char *ch_query;
ch_query="select * from mytable";
if(mysql_real_query(&mysql,ch_query,(UINT)strlen(ch_query))!=0){ 
AfxMessageBox("        "); 
}
CString str;
MYSQL_RES *result;
MYSQL_ROW row;
if(!(result=mysql_use_result(&mysql))){ 
AfxMessageBox("       "); 
}
int i=0;
while(row=mysql_fetch_row(result)){
str.Format("%s",row[0]);
m_list.InsertItem(i,str);
str.Format("%s",row[1]);
m_list.SetItemText(i,1,str);
str.Format("%s",row[2]);
m_list.SetItemText(i,2,str);
i++;
}
mysql_free_result(result);

(5)データベースを閉じる
mysql_close(&mysql);//    OnDestroy()