(調試此Demo需要將目錄裡的mydb子目錄拷到MySQL安裝目錄的data子目錄下(我的是:D:\Program Files\MySQL\MySQL Server 5.0\data) 摘要:本文詳細闡述了如何進行MySQL的安裝、調試,以及如何用VC進行編譯,實現資料的“添加、修改、刪除”等功能。
一、MySQL的安裝
可以考慮安裝mysql-5.0.41-win32(可到http://www.newhua.com/soft/3573.htm處下載),當然你有更新的版本更好,注意選擇“完整安裝”(只有這樣才會安裝VC編譯時間需要的標頭檔等)。安裝後期會進行伺服器配置,你可以設定你的伺服器登陸密碼,也可以不設定密碼。
二、VC6.0的設定
(1)開啟VC6.0 工具列Tools菜單下的Options選項,在Directories的標籤頁中右邊的“Show directories for:”下拉式清單中選中“Includefiles”,然後在中間列表框中添加你本地安裝MySQL的include目錄路徑。(我的是D:\Program Files\MySQL\MySQL Server 5.0\include)。
(2)在上面說到的“Show directories for:”下拉式清單中選中“Library files”,然後添加你本地安裝MySQL的Lib目錄路徑。Lib目錄下還有debug和opt兩個目錄,建議選debug。(我的是D:\Program Files\MySQL\MySQL Server 5.0\lib\debug)。
(3)在“Project settings->Link:Object/library modules”裡面添加“libmysql.lib”。
(4)在stdafx.h裡面添加如下的內容:
(5)建議將“libmySQL.lib、libmySQL.dll”拷到你所建的工程的目錄下。
三、資料庫、表的建立
開啟“開始->所有程式->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編程
(1)實現添加 功能
(2)實現修改功能
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("增添失敗");
}
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)實現刪除功能
(4)讀取表格內容到CListCtrl控制項m_list
(5)關閉資料庫
mysql_close(&mysql);//最好寫到OnDestroy()函數中
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);
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("刪除失敗");
}
MYSQL mysql; //資料庫連接控制代碼
mysql_init (&mysql);
if(!mysql_real_connect(&mysql,"localhost","root",NULL,"mydb",3306,NULL,0)){//mydb為你所建立的資料庫,3306為連接埠號碼,可自行設定
AfxMessageBox("資料庫連接失敗");
return FALSE;
}
#include "mysql.h"
#include "winsock.h"
#pragma comment(lib,"libmySQL.lib")