当前位置:  技术问答>linux和unix

使用OCI编程,读取表的列数

    来源: 互联网  发布时间:2015-09-27

    本文导语:  最近在Unix上使用C对Oracle编程,可是我对Oracle不熟悉。现在遇到一个难题:怎样读取表中的列数。    如果有哪位大侠知道解决的方法,请回应。    先谢了。 | OCIEnv *penv; OCIError *perr; OCISvc...

最近在Unix上使用C对Oracle编程,可是我对Oracle不熟悉。现在遇到一个难题:怎样读取表中的列数。
   如果有哪位大侠知道解决的方法,请回应。
   先谢了。

|
OCIEnv *penv;
OCIError *perr;
OCISvcCtx *psvc;

int
describe_select_list(char *sql)
{
    OCIStmt *pstmt;
    OCIParam *pparam;
    ub4 pos;
    ub2 dtype;
    ub2 dsize;
    text *name;
    ub4 name_length;

    if (OCIHandleAlloc(penv, (dvoid **)&pstmt, OCI_HTYPE_STMT, 0, 0) == OCI_SUCCESS)
    {
        if (OCIStmtPrepare(pstmt, perr, (text *)sql, strlen(sql), OCI_NTV_SYNTAX, OCI_DEFAULT) == OCI_SUCCESS)
        {
            if (OCIStmtExecute(psvc, pstmt, perr, 0, 0, 0, 0, OCI_DEFAULT) == OCI_SUCCESS)
            {
                OCIAttrGet((dvoid *)pstmt, OCI_HTYPE_STMT, &name_length, 0, OCI_ATTR_PARAM_COUNT, perr);
                printf("found %d total columns.n", name_length);
                pos = 1;
                while (OCIParamGet(pstmt, OCI_HTYPE_STMT, perr, (dvoid *)&pparam, pos) == OCI_SUCCESS)
                {
                    OCIAttrGet((dvoid *)pparam, OCI_DTYPE_PARAM, (dvoid *)&dtype, 0, OCI_ATTR_DATA_TYPE, perr);
                    OCIAttrGet((dvoid *)pparam, OCI_DTYPE_PARAM, (dvoid *)&dsize, 0, OCI_ATTR_DATA_SIZE, perr);
                    OCIAttrGet((dvoid *)pparam, OCI_DTYPE_PARAM, (dvoid *)&name, &name_length, OCI_ATTR_NAME, perr);
                    printf("%02d> column = '%s', type = %d, size = %d.n", pos, name, dtype, dsize);
                    pos++;
                }
                OCIHandleFree(pstmt, OCI_HTYPE_STMT);
                return 0;
            }
        }
    }
    OCIHandleFree(pstmt, OCI_HTYPE_STMT);
    show_error_message("describe_select_list");

    return -1;
}

|
对Oracle的操作和对mysql的一样吗?

    
 
 

您可能感兴趣的文章:

  • C++ I/O 成员 tellg():使用输入流读取流指针
  • linux 下使用 FREETDS 访问数据库 image 字段的问题, 仅能读取 64K ,超出部分读取不到?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 在ACC下不使用循环怎样实现,读取文件指定行的数据.
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 使用shell读取XML文件信息
  • 为什么使用cat输出的文本文件是中文的,使用java从文件读取出来时显示的是乱码?
  • java中使用URL类,读取服务器上的文件返回的中文为什么是乱码?
  • 请教如何使用awk从文件中读取十六进制列的问题
  • linux gdb 没有符号表被读取。请使用 "file" 命令。
  • 使用linq to xml修改app.config示例(linq读取xml)
  • 使用xmltextreader对象读取xml文档示例
  • jquery.cookie() 方法的使用(读取、写入、删除)
  • 使用linq读取分隔符文本文件
  • PHP中使用sleep造成mysql读取失败的案例和解决方法
  • jQuery中使用data()方法读取HTML5自定义属性data-*实例
  • PHP读取大文件的类SplFileObject使用介绍
  • 比较有效的使用C#读取文件的代码
  • 如何实现使用java读取控制台的输入数据?
  • PHP使用imagick读取PDF生成png缩略图的两种方法
  • java使用poi读取excel内容方法实例
  • Linux下使用openssl api编程socket编程,为什么要编译啊?
  • 哪位编程高手知道如何编程实现获取进程的内存使用量信息(linux)
  • kliyx是使用C++语言编程的,还是用C语言编程的?
  • 在linux下使用C语言一般是使用什么编程工具呢???
  • 菜鸟问题,小弟刚刚使用LINUX不久,不知道如何使用编程工具进行编译和运行!
  • linux系统编程基础应该使用哪些书籍?
  • 针对使用java进行硬件编程
  • Linux 短信猫编程怎么使用,急!!!!
  • 强烈呼吁使用QT编程的同志交流交流!!!!!
  • 那有WEBLOGIC的使用手册或编程资料?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我要在 linux下 使用 OCI driver , 该如何配置?
  • Linux下如何使用oci和proc
  • 请问在编译oci接口程序时使用哪些库??
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • AIX 64位系统上如何使用32位OCI oracle driver
  • Python不使用print而直接输出二进制字符串
  • C++ I/O 成员 tellp():使用输出流读取流指针 iis7站长之家
  • Office 2010 Module模式下使用VBA Addressof
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • c#中SAPI使用总结——SpVoice的使用方法
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • c/c++预处理命令预#,##使用介绍
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 在div中使用css让文字底部对齐的方法
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • Python namedtuple(命名元组)使用实例
  • asp程序使用的access在Linux下如何使用!
  • MySQL Workbench的下载安装与使用教程
  • 新装的Linux使用root用户不能使用FTP?
  • nginx Windows版相关问题及使用说明
  • LINUX下使用Eclipse,如何使用交叉编译器?
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • redhat9内存使用率高达73%,怎么查看内存具体使用情况


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3