c 连接mysql端口设置_c++连接mysql(MYSQL C api使用

龙涎"

c 连接mysql(MYSQL C api使用)

龙涎2010-07-19 15:08:12

阅读:639

标签:mysqlit

1、设置工程属性

包含目录 D:\amp\MySQL5\lib\debug;D:\amp\MySQL5\include

2、头文件

代码:

#include 'mysql.h'

#pragma comment(lib,'libmySQL.lib')

public:

...

MYSQL mysql;

char *sql;

MYSQL_RES *result;

MYSQL_ROW row;

4、连接数据库

//mysql_real_connect(数据库句柄,主机名,用户名,密码,数据库名,端口,命名管道,客户端标记)

代 码:

mysql_init(&mysql);

if (!mysql_real_connect(&mysql,'localhost','root','1','mydb',3306,NULL,0))

{

MessageBox(_T(' 数据库连接错误!'));

return FALSE;

}

mysql_query(&mysql,'SET NAMES gb2312');

mysql_query(&mysql,'SET character set gb2312');

5、如果连接成功,就可以进行数据库的读写了:

步骤是:

1.mysql_query()提交查询语句

2.mysql_use_result() 获取上一次查询的结果集

3.mysql_fetch_row()从结果集中获取单项内容

4.mysql_free_result() 释放结果集

根据建vc工程的属性:

a.如果不是unicode,只需要在输入输出数据库的地方加上 mysql_query(&mysql,'SET NAMES gb2312');

b.如果是unicode,文件是ANSI编码,要进 行转换,转换是用MultiByteToWideChar()和WideCharToMultiByte()这两个Windows API,前者ANSI > Unicode, 后者Unicode > ANSI。

ANSI > Unicode:

WCHAR ch[200];

MultiByteToWideChar(CP_ACP,0,row[0],nLength[0] 1,ch,sizeof(ch));

===============================================

Unicode > ANSI:

// 将CString的内容转换为ANSI

void UnicodeToAnsi( CString str,char *pstr )

{

WCHAR *pwtrQuery;

pwtrQuery = (WCHAR *)(LPCTSTR)str;

WideCharToMultiByte(CP_ACP,0,pwtrQuery,-1,pstr,strlen(pstr),NULL,NULL);

}

使用方法:

char ch[200];

CString str = L'Unicode charactor';

UnicodeToAnsi(ch, str);

Unicode版代码:

sql = 'select username,visitelist,remark from mytable';

if(mysql_query(&mysql, sql)!=0)

{

MessageBox(_T(' 读取表出错!'));

return;

}

if(!(result = mysql_use_result(&mysql)))

{

MessageBox(_T('读取数据集失败!'));

return;

}

int i = 0;

CString tmp;

WCHAR wsz[100];

unsigned long*nLength;

while(row = mysql_fetch_row(result))

{

//ANSI > Unicode

// 获取结果字段的长度

nLength = mysql_fetch_lengths(result);

// 获取结果集中第一个字段的内容

MultiByteToWideChar(CP_ACP,0,row[0],nLength[0] 1,wsz,sizeof(wsz));

// tmp.Format(_T('%s'),row[0]);

m_list.InsertItem(0, wsz);

nLength = mysql_fetch_lengths(result);

MultiByteToWideChar(CP_ACP,0,row[1],nLength[1] 1,wsz,sizeof(wsz));

// tmp.Format(_T('%s'),row[1]);

m_list.SetItemText(0, 1, wsz);

nLength = mysql_fetch_lengths(result);

MultiByteToWideChar(CP_ACP,0,row[2],nLength[2] 1,wsz,sizeof(wsz));

// tmp.Format(_T('%s'),row[2]);

m_list.SetItemText(0, 2, wsz);

i ;

}

mysql_free_result(result);

非Unicode版代码:

...

while(row = mysql_fetch_row(result))

{

tmp.Format('%s',row[0]);

m_list.InsertItem(0, tmp);

nLength = mysql_fetch_lengths(result);

tmp.Format('%s',row[1]);

m_list.SetItemText(0, 1, tmp);

nLength = mysql_fetch_lengths(result);

tmp.Format('%s',row[2]);

m_list.SetItemText(0, 2, tmp);

i ;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值