VC操作MySQL

来源(博客频道 - CSDN.NET)

From: http://blog.csdn.net/hcqi2004/article/details/8797428

VC操作MySQL

2013-04-13 17:08 5849人阅读

分类:VC操作数据库

一、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<fieldcount;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<fieldcount;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()函数中

Link: http://www.asm32.net/article_details.aspx?id=7035


浏览次数 0 发布时间 2016-09-11 01:10:05 从属分类 VC++ 【评论】【 】【打印】【关闭
 
| www.asm32.net | 2006版 | 资料中心 | linux | asm/asm32 | C/C++ | VC++ | java | Python | 书签 | ASP.Net书签 | 京ICP备09029108号-1