C++连接MYSQL
2009-09-05 12:09
337 查看
#include <stdio.h> #include <windows.h> #include <mysql.h> #define host "localhost" #define username "root" #define password "root123" #define database "ww" MYSQL *conn; int main() { MYSQL_RES *res_set; MYSQL_ROW row; unsigned int i,ret; FILE *fp; MYSQL_FIELD *field; unsigned int num_fields; conn = mysql_init(NULL); //ret = mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg) ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gb2312"); mysql_real_connect(conn,host,username,password,database,0,NULL,0); fp = fopen ( "ww.out","w"); fprintf(fp,"char set %s/n", mysql_character_set_name(conn)); mysql_query(conn,"SELECT * FROM ww ");//WHERE a1='abc'"); res_set = mysql_store_result(conn); while((field = mysql_fetch_field(res_set))) { printf("field name %s/n", field->name); } num_fields = mysql_num_fields(res_set); for(i = 0; i < num_fields; i++) { field = mysql_fetch_field_direct(res_set, i); printf("Field %u is %s/n", i, field->name); } while ((row = mysql_fetch_row(res_set)) != NULL) { for (i=0; i<mysql_num_fields(res_set); i++) { fprintf(fp,"%s/n",row[i] != NULL ? row[i] : "NULL"); } } mysql_close(conn); fclose(fp); return 0; }
还可以如下:
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++; }
相关文章推荐
- C++连接mysql的方法(直接调用C-API)
- C++连接mysql编译报错“无法打开包括文件mysql.h”
- mysql---centos下使用c++连接mysql
- 数据库连接检查以及在c++中捕获mysql报出的错误
- c++ 通过mysql_real_connect()连接数据库
- Visual Studio2013 C++使用API连接MYSQL(64位)
- c++操作mysql - 连接
- win7 64下C/C++连接mysql
- C++连接mysql及遇到的相关问题
- C++ 连接MySQL数据库——(一)利用MySQL自己的API函数
- MySQLConnector/C++连接方式二
- C++ 连接 mysql 的一个例子(Visual Studio 2005)
- C/C++如何连接MySQL服务器以及简单加密
- (收集整理)MySQL相关使用-(cmd操作, c++中连接MySQL)
- C/C++连接数据库MySQL(自己写的一个通讯录软件,供大家学习交流)
- C/C++ 连接 MySQL (GCC 版) 以及 VC版
- C++ 连接Mysql基础配置
- C++ 连接mysql等数据库(二)
- C/C++中调用api设置mysql连接的编码方式