第一篇: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 }