700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c 指定端口连接mysql_c++连接mysql(MYSQL C api使用)

c 指定端口连接mysql_c++连接mysql(MYSQL C api使用)

时间:2024-07-17 10:00:14

相关推荐

c  指定端口连接mysql_c++连接mysql(MYSQL C api使用)

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++;

}

...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。