C++操作MySql
(1)首先安装MySql数据库服务:
下载:http://pan.baidu.com/s/1bn1TZsV
安装步骤:http://write.blog.csdn.net/postedit/23966241
(2)安装navicat数据库客户端:
下载:http://pan.baidu.com/s/1i3kMOy5
安装步骤:傻瓜安装,选择字符集的时候自己根据情况选择gbk2312,或者utf-8(一般涉及到网络传输或者跨平台,比如和java项目公用数据,会选择utf-8)
(3)安装odbc数据库连接驱动:
下载:http://pan.baidu.com/s/1sjPicjF
安装:http://jingyan.baidu.com/article/8065f87f38b31423312498e4.html 注意这里的安装介绍里面的:打开数据源:开始->设置->控制面板->“管理工具”找到“数据源”
(4)使用otl操作mysql
创建VS项目:
包含头文件:otl4.h
下载:http://pan.baidu.com/s/1c0tK1jE
包含源文件:
#include <iostream> using namespace std; #include <stdio.h> #define OTL_ODBC // CompileOTL 4.0/ODBC // Thefollowing #define is required with MyODBC 5.1 and higher #define OTL_ODBC_SELECT_STM_EXECUTE_BEFORE_DESCRIBE #define OTL_UNICODE // CompileOTL with Unicode #include "otlv4.h"// include the OTL 4.0 header file otl_connect db; // connect object void insert() // insert rowsinto table { otl_stream o(1, //buffer size should be == 1 always on INSERT. "insert into test_tab values(:f1<int>,:f2<char[5]>)", // SQLstatement, char[5] means 5 2-byte // Unicodecharatcters including a null // terminator db // connectobject ); unsigned short tmp[32]; // Nullterminated Unicode character array. for(int i=1;i<=100;++i){ o<<i; tmp[0]=1111; //Unicode character (decimal code of 1111) tmp[1]=2222; //Unicode character (decimal code of 2222) tmp[2]=3333; //Unicode chracater (decimal code of 3333) tmp[3]=4444; //Unicode chracater (decimal code of 4444) tmp[4]=0; //Unicode null terminator o<<(unsigned char*)tmp; // overloadedoperator<<(const unsigned char*) in the case of Unicode // OTL acceptsa pointer to a Unicode character array. //operator<<(const unsigned short*) wasn‘t overloaded // in order toavoid ambiguity in C++ type casting. } } void select() { otl_stream i(50, //buffer size " select* from test_tab " "where f1>= :f11<int> " " and f1 <= :f12<int>*2 ", // SELECTstatement db // connectobject ); // create selectstream int f1; unsigned short f2[32]; i<<8<<8; // assigning :f11 = 8, f12 = 8 // SELECTautomatically executes when all input variables are // assigned. Firstportion of output rows is fetched to the buffer while(!i.eof()){// while not end-of-data i>>f1; i>>(unsigned char*)f2; // overloaded operator>>(unsignedchar*) in the case of Unicode // OTL acceptsa pointer to a Unicode chracter array. //operator>>(unsigned short*) wasn‘t overloaded // in order toavoid ambiguity in C++ type casting. cout<<"f1="<<f1<<", f2="; for(int j=0;f2[j]!=0;++j) cout<<""<<f2[j]; cout<<endl; } i<<4<<4; // assigning :f11 = 4, :f12 = 4 // SELECTautomatically executes when all input variables are // assigned. Firstportion of output rows is fetched to the buffer while(!i.eof()){// while not end-of-data i>>f1>>(unsigned char*)f2; cout<<"f1="<<f1<<", f2="; for(int j=0;f2[j]!=0;++j) cout<<""<<f2[j]; cout<<endl; } } int main() { otl_connect::otl_initialize(); // initialize the database API environment try{ // connect to the database user/psw/dsn,这里的dsn是odbc创建数据源的时候设置的, //注意dsn是odbc连接的名字,不是数据库的名字,otl是通过odbc的名字找到数据库的, //而这个名字对于的配置里面 //已经包含了IP,端口等信息,只要你提供用户名和密码就可以访问了 //见http://jingyan.baidu.com/article/8065f87f38b31423312498e4.html db.rlogon("root/123456@local_connect"); otl_cursor::direct_exec ( db, "drop table test_tab", otl_exception::disabled // disable OTL exceptions ); // droptable otl_cursor::direct_exec ( db, "create table test_tab(f1 int, f2 varchar(11))" ); // create table insert(); //insert records into table select(); //select records from table } catch(otl_exception&p){ // intercept OTL exceptions cerr<<p.msg<<endl; // print out error message cerr<<p.stm_text<<endl; // print out SQL that caused the error cerr<<p.var_info<<endl; // print out the variable that caused the error } db.logoff(); //disconnect from the database getchar(); return 0; }
输出:
f1=8, f2=1111222233334444
f1=9, f2=1111222233334444
f1=10, f2=1111222233334444
f1=11, f2=1111222233334444
f1=12, f2=1111222233334444
f1=13, f2=1111222233334444
f1=14, f2=1111222233334444
f1=15, f2=1111222233334444
f1=16, f2=1111222233334444
f1=4, f2=1111222233334444
f1=5, f2=1111222233334444
f1=6, f2=1111222233334444
f1=7, f2=1111222233334444
f1=8, f2=1111222233334444
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。