第一篇:VC连接MySql

第一步,安装MySql的windows32版本:必须完整完整才行<mysql-5.6.10.zip>

安装完毕之后,我们用类向导写一个MFC对话框程序:

给工程添加需要包含的头文件和lib文件个:

tools->options->show directories for-> include files://头文件
C:\PROGRAM FILES\MYSQL\MYSQL SERVER 5.0\INCLUDE//包含头文件
tools->options->show directories for-> library files://库文件
C:\PROGRAM FILES\MYSQL\MYSQL SERVER 5.0\LIB\OPT//包含lib文件

在project->setting->project settings->link->object/library modules中添加libmysql.lib

最后,把

libmySQL.dll放入C:\WINDOWS\system32目录

关于MySql的操作:

 

1 打开“开始->所有程序->MySQL->MySQL Server 5.0->MySQL Command Line Client.exe”,如果没有设置密码就直接按回车,会提示服务器启动成功。
2 
3 mysql> SHOW DATABASES;//显示所有的数据库,注意一定要 敲“;”后再按回车
4 mysql> CREATE DATABASE mydb;//创建数据库mydb
5 mysql> USE mydb;//选择你所创建的数据库mydb
6 mysql> SHOW TABLES; //显示数据库中的表
7 mysql> CREATE TABLE mytable (username VARCHAR(100), visitelist VARCHAR(200),                                 remark VARCHAR(200));//创建一个表mytable: 用户名;访问列表;备注
8 mysql> DESCRIBE mytable;//显示表的结构

 

 

第二步:在StdAfx.h中添加头文件

1 //////////////////////////////////////////////////////////////////////////
2 #include "winsock.h"   // 如果编译出错,则把该行放到#include "mysql.h"之前
3 #include "mysql.h"
4 #pragma comment(lib,"libmySQL.lib")   // 如果在附加依赖项里已增加,则就不要添加了
5 //////////////////////////////////////////////////////////////////////////

最后添加按钮事件就Ok了

 1 void CSuperSqlDlg::OnButton1() 
 2 {
 3     MYSQL mysql; //数据库连接句柄
 4     mysql_init (&mysql);
 5     if(!mysql_real_connect(&mysql,"localhost","root",NULL,"mydb",3306,NULL,0))  //127.0.0.1
 6     {//mydb为你所创建的数据库,3306为端口号,可自行设定 
 7         AfxMessageBox("数据库连接失败"); 
 8         return;
 9     }
10     else
11     {
12         AfxMessageBox("服务器连接成功!");
13     }
14 
15     if(mysql_set_character_set(&mysql,"utf8") != 0)
16     {
17         AfxMessageBox("mysql_set_character_set Error");
18         return ;
19     }
20     else
21     {
22         AfxMessageBox("语音设置成功!");
23     }
24     CString strSQL;
25     strSQL.Format("INSERT INTO mytable VALUES ('china', 'TianPan',  'LOVE')");
26     AfxMessageBox(strSQL);
27     if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength()+1)!=0)
28     { 
29         AfxMessageBox("增添失败"); 
30     }
31     else
32     {
33         AfxMessageBox("插入语句成功!");
34     }
35 }

 

 ps:按钮事件,读取数据库到列表框

初始化:

 1 LONG lStyle;
 2   lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE); //获取当前窗口style 
 3   lStyle &= ~LVS_TYPEMASK;  //清除显示方式位
 4   lStyle |= LVS_REPORT;  //设置style 
 5   SetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle); //设置style
 6   DWORD dwStyle = m_list.GetExtendedStyle();
 7   dwStyle |= LVS_EX_FULLROWSELECT; //选中某行使整行高亮(只适用与report风格的listctrl)
 8   dwStyle |= LVS_EX_GRIDLINES; //网格线(只适用与report风格的listctrl)
 9   dwStyle |= LVS_SHOWSELALWAYS;//一直选中
10   m_list.SetExtendedStyle(dwStyle);  //设置扩展风格 
11 
12 //////////////////////////////////////////////////////////////////////////
13   m_list.InsertColumn( 0, "第一项", LVCFMT_LEFT, 40 );//插入列
14   m_list.InsertColumn( 1, "第二项", LVCFMT_LEFT, 50 );
15   m_list.InsertColumn( 2, "第三项", LVCFMT_LEFT, 60 );

 

  按钮事件

 1 void CSuperSqlDlg::OnButton1() 
 2 {
 3     MYSQL mysql; //数据库连接句柄
 4     mysql_init (&mysql);
 5     if(!mysql_real_connect(&mysql,"localhost","root",NULL,"mydb",3306,NULL,0))  //127.0.0.1
 6     {//mydb为你所创建的数据库,3306为端口号,可自行设定 
 7         AfxMessageBox("数据库连接失败"); 
 8         return;
 9     }
10     else
11     {
12         AfxMessageBox("服务器连接成功!");
13     }
14 
15     if(mysql_set_character_set(&mysql,"utf8") != 0)
16     {
17         AfxMessageBox("mysql_set_character_set Error");
18         return ;
19     }
20     else
21     {
22         AfxMessageBox("语音设置成功!");
23     }
24     CString strSQL;
25     strSQL.Format("INSERT INTO mytable VALUES (\'%s\', 'TianPan',  'LOVE')",_T("你好"));
26     
27     AfxMessageBox(strSQL);
28     if(mysql_real_query(&mysql,(char*)(LPCTSTR)strSQL,(UINT)strSQL.GetLength()+1)!=0)
29     { 
30         AfxMessageBox("增添失败"); 
31     }
32     else
33     {
34         AfxMessageBox("插入语句成功!");
35     }
36 
37 
38     m_list.DeleteAllItems();
39     char *ch_query;
40     ch_query="select * from mytable";
41     if(mysql_real_query(&mysql,ch_query,(UINT)strlen(ch_query))!=0){ 
42         AfxMessageBox("数据库中表格出错"); 
43     }
44     CString str;
45     MYSQL_RES *result;
46     MYSQL_ROW row;
47     if(!(result=mysql_use_result(&mysql))){ 
48         AfxMessageBox("读取数据集失败"); 
49     }
50     int i=0;
51     while(row=mysql_fetch_row(result)){
52         str.Format("%s",row[0]);
53         m_list.InsertItem(i,str);
54         str.Format("%s",row[1]);
55         m_list.SetItemText(i,1,str);
56         str.Format("%s",row[2]);
57         m_list.SetItemText(i,2,str);
58         i++;
59     }
60     mysql_free_result(result);
61 }

posted @ 2013-08-04 17:39  GOD攀  阅读(233)  评论(0编辑  收藏  举报