c++数据库访问OTL和DTL
2011-11-24 09:35
267 查看
OTL :http://otl.sourceforge.net/
DTL:http://dtemplatelib.sourceforge.net/
OTL例子:http://otl.sourceforge.net/otl3_examples.htm
OTL是一个纯C++的通用数据库连接模板库,可以支持各种当下流行的数据库,如Oracle,Sybase, MySQL, PostgreSQL, EnterpriseDB, SQLite, MS ACCESS, Firebird等等.它是一个跨平台类库,在MS Windows, Linux/Unix/Mac OS X 都可以使用。
OTL使用简单, 只要头文件中包含有: #include "otlv4.h" 就可,实际上整个OTL就一个.H的文件,使用起来极为的方便。
OTL使用方法:
1、首先指定要连接的数据库类型,OTL用宏定义来指定要连接的数据库类型。OTL会根据这个宏定义来初始化数据库连接的环境。
相关的宏定义列表 http://otl.sourceforge.net/otl3_compile.htm
如: #define OTL_ORA8I 表示连接Oracle 8i 数据库。
------------------------------------------------------------------------------------
使用otl访问sql server
#include
<iostream>
using namespace
std;
#include
<stdio.h>
#define OTL_ODBC_MSSQL_2008
// Compile OTL 4.0/ODBC for MS SQL 2008
#define OTL_MAP_SQL_GUID_TO_CHAR
#include
<otlv4.h>
// include the OTL 4.0 header file
otl_connect db;
// connect object
void insert()
// insert rows into table
{
otl_stream o(5,
// buffer size
"insert into test_tab values(:f1<int>,newid())",
// SQL statement
db // connect object
);
for(int i=1;i<=13;++i)
o<<i;
}
void select()
{
otl_stream i(5,
// buffer size
"select * from test_tab",
// SELECT statement
db // connect object
);
// create select stream
otl_stream o(7,
// buffer size
"insert into test_tab2 values(:f1<int>,:f2<char[37]>)",
// INSERT statement
db // connect object
);
// create insert stream
o.set_commit(0);
// turnin off the otl_stream's autocommit flag
int f1;
char f2[37];
while(!i.eof()){
// while not end-of-data
i>>f1>>f2;
cout<<"f1="<<f1<<",
f2="<<f2<<endl;
o<<f1<<f2;
}
o.flush();
// flushing the otl_stream's buffer
db.commit();
// committing transaction
}
int main()
{
otl_connect::otl_initialize();
// initialize ODBC environment
try{
db.rlogon("UID=scott;PWD=tiger;DSN=mssql2008");
// connect to ODBC
otl_cursor::direct_exec
(
db,
"drop table test_tab",
otl_exception::disabled
// disable OTL exceptions
);
// drop table
otl_cursor::direct_exec
(
db,
"create table test_tab(f1 int, f2 uniqueidentifier)"
);
// create table
otl_cursor::direct_exec
(
db,
"drop table test_tab2",
otl_exception::disabled
// disable OTL exceptions
);
// drop table
otl_cursor::direct_exec
(
db,
"create table test_tab2(f1 int, f2 uniqueidentifier)"
);
// create table
insert();
// insert records into table
select();
// select records from test_tab and insert them into test_tab2
}
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.sqlstate<<endl;
// print out SQLSTATE message
cerr<<p.var_info<<endl;
// print out the variable that caused the error
}
db.logoff();
// disconnect from ODBC
return 0;
}
DTL:http://dtemplatelib.sourceforge.net/
OTL例子:http://otl.sourceforge.net/otl3_examples.htm
OTL是一个纯C++的通用数据库连接模板库,可以支持各种当下流行的数据库,如Oracle,Sybase, MySQL, PostgreSQL, EnterpriseDB, SQLite, MS ACCESS, Firebird等等.它是一个跨平台类库,在MS Windows, Linux/Unix/Mac OS X 都可以使用。
OTL使用简单, 只要头文件中包含有: #include "otlv4.h" 就可,实际上整个OTL就一个.H的文件,使用起来极为的方便。
OTL使用方法:
1、首先指定要连接的数据库类型,OTL用宏定义来指定要连接的数据库类型。OTL会根据这个宏定义来初始化数据库连接的环境。
相关的宏定义列表 http://otl.sourceforge.net/otl3_compile.htm
如: #define OTL_ORA8I 表示连接Oracle 8i 数据库。
------------------------------------------------------------------------------------
使用otl访问sql server
#include
<iostream>
using namespace
std;
#include
<stdio.h>
#define OTL_ODBC_MSSQL_2008
// Compile OTL 4.0/ODBC for MS SQL 2008
#define OTL_MAP_SQL_GUID_TO_CHAR
#include
<otlv4.h>
// include the OTL 4.0 header file
otl_connect db;
// connect object
void insert()
// insert rows into table
{
otl_stream o(5,
// buffer size
"insert into test_tab values(:f1<int>,newid())",
// SQL statement
db // connect object
);
for(int i=1;i<=13;++i)
o<<i;
}
void select()
{
otl_stream i(5,
// buffer size
"select * from test_tab",
// SELECT statement
db // connect object
);
// create select stream
otl_stream o(7,
// buffer size
"insert into test_tab2 values(:f1<int>,:f2<char[37]>)",
// INSERT statement
db // connect object
);
// create insert stream
o.set_commit(0);
// turnin off the otl_stream's autocommit flag
int f1;
char f2[37];
while(!i.eof()){
// while not end-of-data
i>>f1>>f2;
cout<<"f1="<<f1<<",
f2="<<f2<<endl;
o<<f1<<f2;
}
o.flush();
// flushing the otl_stream's buffer
db.commit();
// committing transaction
}
int main()
{
otl_connect::otl_initialize();
// initialize ODBC environment
try{
db.rlogon("UID=scott;PWD=tiger;DSN=mssql2008");
// connect to ODBC
otl_cursor::direct_exec
(
db,
"drop table test_tab",
otl_exception::disabled
// disable OTL exceptions
);
// drop table
otl_cursor::direct_exec
(
db,
"create table test_tab(f1 int, f2 uniqueidentifier)"
);
// create table
otl_cursor::direct_exec
(
db,
"drop table test_tab2",
otl_exception::disabled
// disable OTL exceptions
);
// drop table
otl_cursor::direct_exec
(
db,
"create table test_tab2(f1 int, f2 uniqueidentifier)"
);
// create table
insert();
// insert records into table
select();
// select records from test_tab and insert them into test_tab2
}
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.sqlstate<<endl;
// print out SQLSTATE message
cerr<<p.var_info<<endl;
// print out the variable that caused the error
}
db.logoff();
// disconnect from ODBC
return 0;
}
相关文章推荐
- 使用OTL来访问数据库 - 牵着老婆满街逛 - C++博客
- VS2008C++利用ADO访问数据库
- C++通过ADO访问数据库的连接字符串
- 【一】ODB - C++ 访问数据库的利器--Hello World On Windows(Version-24)
- C++用OTL访问Oracle数据库的例子
- 使用OTL来访问数据库
- Linux下使用C/C++访问数据库——MySQL篇
- Linux下使用C/C++访问数据库——Oracle之OCI篇
- Linux下使用C/C++访问数据库
- Linux下使用C/C++访问数据库——SQL Server篇
- Visual C++.NET数据库访问技术
- C++用OTL访问Oracle数据库的例子
- Linux下使用C/C++访问数据库——MySQL篇
- c++访问oracle的一个超级方便的东西_OTL
- MFC - HOOK和数据库访问 ( 孙鑫C++第二十讲笔记整理 )
- Linux下使用C/C++访问数据库——Oracle之OCI篇
- OTL--c++中连接数据库的方法
- linux c++编写访问mysql程序,访问数据库出错,解决方法
- C++类库:OTL通用的数据库连接类库
- 更简洁的C++数据库访问框架-soci