select函数

select函数分析

select函数格式

int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
  • 参数说明:
    • nfds:为所监控文件描述符集的最大长度加1
    • readfds: 指定的读操作监控集
    • writefds:指定的写操作监控集
    • exceptfds:忽略监控的文件描述符集
    • timeout: 函数的超时时限。当设置为NULL,则说明还是一直等待直到有一个文件描述符的状态改变
注意:timeout 对于linux系统,此参数没有const限制,每次select调用完毕timeout的值都被修改为剩余时间,
而unix系统则不会改变timeout值(网上处理的注意说明)
  • 返回值说明:
    • 执行成功返回监控集中有操作请求的文件描述符的个数,失败则返回-1,并设置全局错误变量errno

根据例子判断select函数能否使用到oracle连接上面

  • 两个例子,一个打开标准输入输出,一个为
int open(const char * pathname, int oflag,....)
// 打开成功,返回打开文件的文件描述符,否则返回-1
int socket(int domian, int type, int protocol )
// 函数执行成功,返回一个socket描述符,失败则返回-1
  • occi连接数据库过程没有int句柄

    • 不使用连接池的情况
Environment *env = Environment::createEnvironment();
Connection *conn = env->createConnection(username,password,connstring);
Statement *stmt  = conn->createStatement();
string sql = "select MIN(ID), MAX(ID) from tablename";
stmt->setSQL(sql);  // 没有返回值 "void setSQL(const string &sql)"
ResultSet *rs    = stmt->executeQuery(); // 返回结果集
+ 使用连接池的情况
Environment *env         = Environment::createEnvironment();
ConnectionPool *connPool = env->createConnectionPool(username,password,connstring,3,5,2);
Connection *conn         = connPool->createConnection(username,password);
Statement *stmt          = conn->createStatement();
string sql = "select MIN(ID), MAX(ID) from tablename";
stmt->setSQL(sql);  // 没有返回值 "void setSQL(const string &sql)"
ResultSet *rs    = stmt->executeQuery(); // 返回结果集

结论:oracle采用occi类进行连接时,没有用到描述符, 无法使用select

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值