#include
#include
#include
int main()
{
MYSQL mysql;
mysql_init(&mysql); //初始化mysql结构
if(!mysql_real_connect(&mysql,"localhost","root","lvbao","test",3306,NULL,0))
printf("\n连接数据库时发生错误!\n");
else
printf("\n连接数据库成功!\n");
char sqlinsert[1024] ={0};
char *doorname="aaaaaaaaaaa";
sprintf(sqlinsert,"INSERT INTO tab1(tab1_id) VALUES( '%s');",doorname);
if(0==mysql_query(&mysql,sqlinsert))
{
printf("插入刷卡记录:%s成功",sqlinsert);
}
else
{
printf("插入刷卡记录:%s失败:%s",sqlinsert,mysql_error(&mysql));
}
mysql_close(&mysql); //释放数据库
return 0;
}
一、MySQL的安装
二、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、在调用mysql函数的cpp文件中添加如下的内容:
#include "winsock.h"
#include "mysql.h"//头文件顺序不能颠倒
三、Vs2008的设置
1. 下载mysql安装包,记住安装的时候选择完全安装,不然是找不到mysql.h的
2. vs2008 中新建一个win32 console项目,右击项目,选择属性。
#找到配置属性--->c/c++----->常规----->附加包含目录 添加要包含的目录,这里选择上面安装后的include和lib两个文件夹.
# 找到配置属性--->链接器----->常规----->附加库目录 添加要包含的目录,这里选择上面安装后的lib/opt文件夹.
# 找到配置属性--->链接器----->输入----->附加依赖项 添加依赖项:libmySQL.lib
四、VC编程
MYSQL mysql; //数据库连接句柄
1、连接mysql
int ConnectMysql(LPCTSTRsip,LPCTSTRsuser,LPCTSTRspass,LPCTSTRsdbname,int sport)
{
if( mysql_init(&mysql) == NULL )
{
Trace2Logger("初始化mysql失败!");
return 0;
}
//实例mysql_real_connect(&mysql,"127.0.0.1","root","","zkeco_db",17770,NULL,0)
if(!mysql_real_connect(&mysql,sip,suser,spass,sdbname,sport,NULL,0))
{
Trace2Logger("连接mysql失败:%s",mysql_error(&mysql));
return 0;
}
else
{
Trace2Logger("数据库连接成功");
return 1;
}
}
2、实现添加功能
char sqlinsert[1024] ={0};
sprintf(sqlinsert,"INSERT INTO acc_monitor_log(id, time,door_id, door_name,event_type) VALUES(%d, '%s' ,'%s', '%s' , %s);",maxid,devds[0] ,doorid,doorname,devds[4]);
if(0==mysql_query(&mysql,sqlinsert))
{
Trace2Logger("插入刷卡记录:%s成功",sqlinsert);
}
else
{
Trace2Logger("插入刷卡记录:%s失败:%s",sqlinsert,mysql_error(&mysql));
}
3、实现修改功能
CString strUsername,strList,strRemark,strSQL,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("修改失败");
}
4、实现删除功能
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("删除失败");
}
5、实现读取功能
//显示刚才插入的数据
CString sqlstr="SELECT * FROM vctest";
CString loginfo="";
MYSQL_RES *result=NULL;
if(0==mysql_query(&mysql,sqlstr))
{
loginfo="mysql_query() select data succeed";
MessageBox(loginfo);
//一次性取得数据集
result=mysql_store_result(&mysql);
//取得并打印行数
int rowcount=mysql_num_rows(result);
loginfo.Format("row count=%d",rowcount);
MessageBox(loginfo);
//取得并打印各字段的名称
unsigned int fieldcount=mysql_num_fields(result);
MYSQL_FIELD *field=NULL;
loginfo="";
for(unsignedint i=0;i
{
field=mysql_fetch_field_direct(result,i);
loginfo=loginfo+(field->name)+",";
}
MessageBox(loginfo);
//打印各行
MYSQL_ROW row=NULL;
row=mysql_fetch_row(result);
loginfo="";
while(NULL!=row)
{
for(inti=0; i
{
loginfo=loginfo+(row[i])+",";
}
loginfo=loginfo+";";
row=mysql_fetch_row(result);
}
MessageBox(loginfo);
}
else {MessageBox("mysql_query() select data failed");}
6、关闭数据库
mysql_close(&mysql);//最好写到OnDestroy()函数中