c++链接数据库测试,中文有问题
来源:互联网 发布:同步助手java 编辑:程序博客网 时间:2024/05/12 08:40
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <Windows.h>#include <sql.h>#include <sqlext.h>#include <Sqltypes.h>#include "iostream"using namespace std;/* 检测返回代码是否为成功标志,当为成功标志返回TRUE,否则返回FALSE */#define RC_SUCCESSFUL(rc) ((rc) == SQL_SUCCESS || (rc) == SQL_SUCCESS_WITH_INFO)/* 检测返回代码是否为失败标志,当为失败标志返回TRUE,否则返回FALSE */#define RC_NOTSUCCESSFUL(rc) (!(RC_SUCCESSFUL(rc)))HENV henv; /* 环境句柄 */HDBC hdbc; /* 连接句柄 */HSTMT hsmt; /* 语句句柄 */SQLRETURN sret; /* 返回代码 */char szcode[6]; /* 厂商编号 */long cbcode = 0;char szname[21]; /* 厂商名 */long cbname = 0;char szasset[13]; /* 资产总值 */long cbasset = 0;char szaddress[11];/* 厂商地址 */long cbaddress = 0;void main(void){/* 申请一个环境句柄 */SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);/* 设置环境句柄的ODBC版本 */SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);/* 申请一个连接句柄 */SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);//SQLConnect(hdbc, (SQLCHAR *)"DM4", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS);SQLConnect(hdbc,(SQLCHAR *)"handgame",SQL_NTS,(SQLCHAR *)"root",SQL_NTS,(SQLCHAR *)"handgame",SQL_NTS);/* 申请一个语句句柄 */SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hsmt);/* 立即执行查询厂商登记表的语句 */SQLExecDirect(hsmt, (SQLCHAR *)"SELECT nickname, charguid, exp, platformgold FROM t_char where account = 'ii21';", SQL_NTS);/* 绑定数据缓冲区 */SQLBindCol(hsmt, 1, SQL_C_CHAR, szcode, sizeof(szcode), &cbcode);SQLBindCol(hsmt, 2, SQL_C_CHAR, szname, sizeof(szname), &cbname);SQLBindCol(hsmt, 3, SQL_C_CHAR, szasset, sizeof(szasset), &cbasset);SQLBindCol(hsmt, 4, SQL_C_CHAR, szaddress, sizeof(szaddress), &cbaddress);/* 取得数据并且打印数据 */printf("厂商编号 厂商名 资产总值 厂商地址/n");for (;;) {sret = SQLFetchScroll(hsmt, SQL_FETCH_NEXT, 0);if (sret == SQL_NO_DATA_FOUND)break;printf("%s %s %s %s/n", szcode, szname, szasset, szaddress);}/* 释放语句句柄 */SQLFreeHandle(SQL_HANDLE_STMT, hsmt);/* 断开与数据源之间的连接 */SQLDisconnect(hdbc);/* 释放连接句柄 */SQLFreeHandle(SQL_HANDLE_DBC, hdbc);/* 释放环境句柄 */SQLFreeHandle(SQL_HANDLE_ENV, henv);}
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#pragma setlocale("chs")#include <windows.h>#include <sql.h>#include <sqlext.h>#include <iostream>using namespace std;void FetchData(SQLHSTMT hstmt){SQLCHAR buffer_1[256];SQLCHAR buffer_2[256];SQLINTEGER status_1, status_2;SQLBindCol(hstmt, 1, SQL_C_CHAR, buffer_1, 256, &status_1);SQLBindCol(hstmt, 2, SQL_C_CHAR, buffer_2, 256, &status_2);while(SQLFetch(hstmt) != SQL_NO_DATA){cout<<buffer_1<<"\t\t"<<buffer_2<<endl;}}void main(){SQLRETURN retcode;SQLHENV henv; //环境句柄SQLHDBC hdbc; //连接句柄SQLHSTMT hstmt; //语句句柄//第1步retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);//分配环境句柄if(ODBC_SQLSUCCESS(retcode)){retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); //设置环境属性,注册ODBC版本号if(ODBC_SQLSUCCESS(retcode)){retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);//分配连接句柄if(ODBC_SQLSUCCESS(retcode)){//SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, 5, 0);//设置连接属性retcode = SQLConnect(hdbc, (SQLCHAR*) "mysql", SQL_NTS,//数据源名称(SQLCHAR*) "root", SQL_NTS,//用户名(SQLCHAR*) "123", SQL_NTS);//用户密码 //连接数据源if(ODBC_SQLSUCCESS(retcode)){cout<<"连接成功"<<endl;retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);//分配语句句柄if(ODBC_SQLSUCCESS(retcode)){retcode = SQLExecDirect(hstmt, (SQLCHAR*)"select * from str", SQL_NTS);if(ODBC_SQLSUCCESS(retcode)){cout<<"SQL查询成功"<<endl;FetchData(hstmt);}SQLFreeHandle(SQL_HANDLE_STMT, hstmt);//释放语句句柄}SQLDisconnect(hdbc);//关闭连接}else{cout<<"连接失败"<<endl;}SQLFreeHandle(SQL_HANDLE_DBC, hdbc);//释放连接句柄}}SQLFreeHandle(SQL_HANDLE_ENV, henv);//释放环境句柄}}
- c++链接数据库测试,中文有问题
- 利用MySQLDriverCS链接MySQL数据库及中文乱码问题
- php语言链接mysql数据库中文显示问题
- python链接mysql数据库及中文编码问题
- Hibernate链接数据库中文乱码问题!(已解决)
- 测试数据库链接数
- C语言链接数据库
- 链接数据库的问题
- 数据库链接编码问题
- 关于C++Builder调用MySQL数据库中文乱码问题
- c语言链接问题
- python 链接 ORACLE 数据库,并打印数据.解决中文乱码问题
- 数据库事务总结 基本特征 并发问题 隔离级别(几个文章的综合,下面有链接)
- C#.NET数据库链接字符串
- c#-ADO.NET链接数据库
- 数据库中文问题总结
- 数据库中文问题总结
- 数据库中文问题总结
- 利用Marshal 进行深拷贝
- 空字符串(''),NULL和0的关系
- initialization of 'XXX' is skipped by 'case' label 原因及解决办法
- drupal显示摘要版本
- xp下安装centOS6.0出现问题 求解答
- c++链接数据库测试,中文有问题
- STP协议
- HDU 3853
- hdu 2824 The Euler function(欧拉函数)
- IOS 判断应用版本和升级提示
- Bubble Sort (排序详解 之 冒泡排序)
- hdu - 4665 - Unshuffle
- onItemClickListener不起作用解决办法2
- poj 1201 差分约束