一、MySQL的安裝
可以考慮安裝mysql-5.0.41-win32(可到
http://www.newhua.com/soft/3573.htm處下載),當(dāng)然你有更新的版本更好,注意選擇“完全安裝”(只有這樣才會(huì)安裝VC編譯時(shí)需要的頭文件等)。安裝后期會(huì)進(jìn)行服務(wù)器配置,你可以設(shè)置你的服務(wù)器登陸密碼,也可以不設(shè)置密碼。
二、VC6.0的設(shè)置
(1)打開(kāi)VC6.0工具欄Tools菜單下的Options選項(xiàng),在Directories的標(biāo)簽頁(yè)中右邊的“Show directories for:”下拉列表中選中“Includefiles”,然后在中間列表框中添加你本地安裝MySQL的include目錄路徑。(我的是D:\Program Files\MySQL\MySQL Server 5.0\include)。
(2)在上面說(shuō)到的“Show directories for:”下拉列表中選中“Library files”,然后添加你本地安裝MySQL的Lib目錄路徑。Lib目錄下還有debug和opt兩個(gè)目錄,建議選debug。(我的是D:\Program Files\MySQL\MySQL Server 5.0\lib\debug)。
(3)在“Project settings->Link:Object/library modules”里面添加“libmysql.lib”。
(4)在stdafx.h里面添加如下的內(nèi)容:
#include "mysql.h"
#include "winsock.h"
#pragma comment(lib, "libmySQL.lib")
(5)建議將“libmySQL.lib、libmySQL.dll”拷到你所建的工程的目錄下。
三、數(shù)據(jù)庫(kù)、表的創(chuàng)建
打開(kāi)“開(kāi)始->所有程序->MySQL->MySQL Server 5.0->MySQL Command Line Client.exe”,如果沒(méi)有設(shè)置密碼就直接按回車(chē),會(huì)提示服務(wù)器啟動(dòng)成功。
mysql> SHOW DATABASES;//顯示所有的數(shù)據(jù)庫(kù),注意一定要 敲“;”后再按回車(chē)
mysql> CREATE DATABASE mydb;//創(chuàng)建數(shù)據(jù)庫(kù)mydb
mysql> USE mydb;//選擇你所創(chuàng)建的數(shù)據(jù)庫(kù)mydb
mysql> SHOW TABLES; //顯示數(shù)據(jù)庫(kù)中的表
mysql> CREATE TABLE mytable (username VARCHAR(100), visitelist VARCHAR(200),
remark VARCHAR(200));//創(chuàng)建一個(gè)表mytable: 用戶(hù)名;訪問(wèn)列表;備注
mysql> DESCRIBE mytable;//顯示表的結(jié)構(gòu)
四、VC編程
MYSQL mysql; //數(shù)據(jù)庫(kù)連接句柄
mysql_init (&mysql);
if(!mysql_real_connect(&mysql,"localhost","root",NULL,"mydb",3306,NULL,0))
{ //mydb為你所創(chuàng)建的數(shù)據(jù)庫(kù),3306為端口號(hào),可自行設(shè)定
AfxMessageBox("數(shù)據(jù)庫(kù)連接失敗");
return FALSE;
}
(1)實(shí)現(xiàn)添加功能
CString strUsername,strList,strRemark,strSQL;
strSQL.Format("insert into mytable(username,visitelist,remark) values(\'%s\',\'%s\',\'%s\')",
strUsername,strList,strRemark);//注意一定要寫(xiě)在一行,而且必須要有\(zhòng)'\'
if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
{
AfxMessageBox("增添失敗");
}
(2)實(shí)現(xiàn)修改功能
CString strUsername,strList,strRemark,strSQL,str_PreName;//str_PreName用于記錄想要修改的行,詳情請(qǐng)看源代碼
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)實(shí)現(xiàn)刪除功能
CString strSQL;
strSQL.Format("delete from mytable where username=\'%s\'",str_PreName);//必須要有\(zhòng)'\'
if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength())!=0)
{
AfxMessageBox("刪除失敗");
}
(4)讀取表格內(nèi)容到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("數(shù)據(jù)庫(kù)中表格出錯(cuò)");
}
CString str;
MYSQL_RES *result;
MYSQL_ROW row;
if(!(result=mysql_use_result(&mysql)))
{
AfxMessageBox("讀取數(shù)據(jù)集失敗");
}
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)關(guān)閉數(shù)據(jù)庫(kù)
mysql_close(&mysql);//最好寫(xiě)到OnDestroy()函數(shù)中
五、結(jié)束語(yǔ)
本文在幾位網(wǎng)友的工作基礎(chǔ)上詳細(xì)介紹了MySQL的安裝、調(diào)試,以及如何用VC進(jìn)行編譯,實(shí)現(xiàn)數(shù)據(jù)的“添加、修改、刪除”等功能,可以為在MySQL的VC編程中感到困惑的朋友們提供一點(diǎn)幫助,在此向幾位網(wǎng)友表示感謝!