当前位置: 首页 > 工具软件 > VC-Logger > 使用案例 >

vc++l调用64位的mysql_VC操作MySQL - lwaif的个人空间 - OSCHINA - 中文开源技术交流社区...

南宫嘉
2023-12-01

#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()函数中

 类似资料: