博客日历
2024年11月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
28 | 29 | 30 | 31 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
存档
2024年03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
Cygwin Easy 及其设置
Cygwin Easy是Cygwin的一个光盘版。用虚拟光驱加载后即可运行。
最新的是:http://linux.studenti.fastbull.org/linuxstudenti/Cygwin-Easy-2007.03.21.iso
Cygwin Easy的中文支持问题:
1.修改桌面\cygwin\.bashrc
# 让ls和dir命令显示中文和颜色
alias dir='dir -N --color'
alias less='/bin/less -r'
alias ls='/bin/ls -F --color=tty --show-control-chars'
# 设置为中文环境,使提示成为中文
export LANG="zh_CN.GB2312"
# 输出为中文编码
export OUTPUT_CHARSET="GB2312"
2.修改桌面\cygwin\.inputrc
2.修改桌面\cygwin\.inputrc
# 支持输入中文
set convert-meta off
set input-meta on
set output-meta on
分类:Linux 查看次数:11606 发布时间:2010/6/21 21:27:38
在VC++中使用OCCI
1.简介
在Windows下访问Oracle数据库可以使用ADO,ADO.Net,OLEDB,ODBC,跨平台的OCCI等方法,其中速度最快,对Oracle支持最完整的是Oracle提供的OCCI.
2.安装OCCI SDK
OCCI SDK包含在Oracle客户端中,在如下位置可以找到:
头文件:C:\oracle\ora92\oci\include
库文件:C:\oracle\ora92\oci\lib\msvc
推荐安装Oracle即时客户端(Instant Client),它也包含有OCCI SDK。
头文件:instantclient_10_2\sdk\include
库文件:instantclient_10_2\sdk\lib\msvc
3.编译OCCI程序
4.OCCI编程步骤
4.1 连接到数据库
//创建OCCI上下文环境
Environment *env = Environment::createEnvironment();
assert(env!=NULL);
//创建数据库连接
Connection *conn = env->createConnection("uid", "pwd","oracle_svr_name");
//...
// todo:插入自己的代码
//关闭连接
env->terminateConnection(conn);
//释放
Environment::terminateEnvironment(env);
4.2 执行基本的SQL语句
//创建SQL语句控制句柄
Statement *stmt = conn->createStatement();
a.执行一般的SQL语句
stmt->executeUpdate("Create TABLE basket_tab (fruit VARCHAR2(30), quantity NUMBER)");
stmt->executeUpdate("delete basket_tab");
b.重复利用SQL语句,参数化的SQL语句
//:1,:2是参数占位符
stmt->setSQL("Insert INTO basket_tab VALUES(:1,:2)");
// 第一个参数
stmt->setString(1, "Bananas");
// 第二个参数
stmt->setInt(2, 5);
stmt->executeUpdate();
c.一次修改多行数据
//最多允许的迭代次数,注意这个参数需要在setXXX系列函数之前执行
stmt->setMaxIterations(int maxIterations);
//指定某个参数的大小,string和byte需要
stmt->setMaxParamSize(int parameterIndex, int maxParamSize);
for(...)
{
// 第一个参数
stmt->setString(1, "Bananas");
// 第二个参数
stmt->setInt(2, 5);
//増加一行记录,类似于ADO的AddNew
pStmt->addIteration();
}
stmt->executeUpdate();
d.执行查询:获取结果集(记录集)
ResultSet *rs = stmt->executeQuery("Select * FROM basket_tab");
while (rs->next())
{
string fruit = rs->getString(1); // get the first column as string
int quantity = rs->getInt(2); // get the second column as int
}
//关闭结果集
stmt->closeResultSet(rs);
e.执行存储过程
//指定存储过程countFruit
stmt->setSQL("BEGIN countFruit(:1, :2); END:");
//设置第一个参数
stmt->setString(1, "Apples");
int quantity;
//注册输出参数
stmt->registerOutParam(2, Type::OCCIINT, sizeof(quantity));
//执行此存储过程
stmt->executeUpdate();
//释放SQL语句控制句柄
conn->terminateStatement(Statement *stmt);
4.3 事务
所有的DDL默认开始并自动提交一个事务
所有的DML默认开始一个事务,且不会自动提交
//可以指定DML是否自动提交
stmt->setAutoCommit(TRUE/FALSE);
//也可以手动提交或回滚。
conn->commit();
conn->rollback();
4.4 异常处理
try
{
//OCCI程序
}
catch (SQLException &sqlExcp)
{
cerr <<sqlExcp.getErrorCode << ": " << sqlExcp.getErrorMessage() << endl;
}
catch (exception &excp)
{
cerr << excp.what() << endl;
}
分类:数据库 查看次数:14520 发布时间:2010/6/21 21:15:49