http://blog.163.com/earth_of_fire/blog/static/1368943200791211622278/(总结)

http://blog.163.com/earth_of_fire/blog/static/1368943200791223416510/(数据列表)

http://blog.163.com/earth_of_fire/blog/static/13689432007918112936198/(select)

http://www.cnblogs.com/hustskyking/p/webAudio-listen.html

http://blog.csdn.net/evgd2288/article/details/6607035 (好)

http://hi.baidu.com/mgqw864/item/e54b48552b8a56978d12ed7f()

http://blog.csdn.net/wbj1234566/article/details/2003200()

http://read.pudn.com/downloads51/sourcecode/windows/database/176187/OCIExample/OCIExampleDlg.cpp__.htm:

http://www.pudn.com/downloads51/sourcecode/windows/database/detail176187.html

http://read.pudn.com/downloads195/sourcecode/database/916923/testoci/testociDlg.cpp__.htm

http://www.pudn.com/downloads195/sourcecode/database/detail916923.html

  1. void COCIExampleDlg::OnButtonConnect()
  2. {
  3. this->UpdateData ();   //更新数据
  4. //代码5.2,处理SQL的第一步,准备SQL
  5. wsprintf((char*)textSQL, "SELECT * FROM Score %s",SQL);
  6. if(status=OCIStmtPrepare(stmthp, errhp,textSQL, strlen((char*)textSQL),OCI_NTV_SYNTAX, OCI_DEFAULT))
  7. {
  8. ErrorProc (errhp, status) ;
  9. return;
  10. }
  11. //代码5.3,处理SOL的第三步,执行
  12. if (status=OCIStmtExecute(svchp, stmthp,errhp, (ub4)0, 0, NULL, NULL, OCI_DEFAULT))
  13. {
  14. ErrorProc (errhp, status) ;
  15. return;
  16. }
  17. //代码5.4,处理SOL的第四步,描述
  18. //代码5.4.1,读取选择列表中的项数
  19. ErrorProc(errhp, OCIAttrGet(stmthp,OCI_HTYPE_STMT,&col_num, 0, OCI_ATTR_PARAM_COUNT,errhp ));
  20. int ColumnNumbers=(int) col_num;
  21. text    *namep;     //字段名称
  22. ub4     sizep;      //字段名称的字符串长度
  23. text    tempText[100];
  24. //获取表的字段的属性信息
  25. int nindex=m_CombolFieldName.GetCurSel();
  26. if(nindex<0) nindex=0;
  27. m_CombolFieldName.ResetContent();
  28. for(int i=0;i<(int)col_num; i++)
  29. {
  30. //为选择项分配参数描述符
  31. ErrorProc(errhp, OCIParamGet(stmthp,OCI_HTYPE_STMT, errhp, (void**)&colhp, ub4(i+1)));
  32. //读取选择项的数据长度
  33. ErrorProc(errhp, OCIAttrGet(colhp, OCI_DTYPE_PARAM,&collen[i], 0, OCI_ATTR_DATA_SIZE, errhp ));
  34. //读取选择项的数据类型
  35. ErrorProc(errhp, OCIAttrGet(colhp, OCI_DTYPE_PARAM,&coltype[i],0, OCI_ATTR_DATA_TYPE, errhp));
  36. //若这个字段为日期型,则把其字符宽度置为50
  37. if (coltype[i]==SQLT_DATE)collen[i] =50;
  38. //分配缓冲区
  39. colbuf[i]=(text*)new text[(int)collen[i]+1];
  40. //代码5.4.2获取字段名称
  41. ErrorProc(errhp, OCIAttrGet(colhp, OCI_DTYPE_PARAM,(dvoid*)&namep, (ub4*)&sizep, OCI_ATTR_NAME, errhp ));
  42. strncpy((char*)tempText, (char*)namep, (size_t)sizep) ;
  43. tempText [sizep]= '\0';
  44. m_grid.SetTextMatrix(0,i+1,(const char *)tempText); //将数据写入表格控件
  45. m_CombolFieldName.AddString((const char *)tempText); //将字段名称添加入下拉列表框
  46. }
  47. m_CombolFieldName.SetCurSel (nindex);
  48. //代码5.5,处理SQL的第五步,定义变量
  49. for(i=0; i<(int)col_num; i++)
  50. {
  51. if (status=OCIDefineByPos (stmthp,&defhp[i],errhp, i+1,(ub1*)colbuf[i],
  52. collen[i]+1,SQLT_STR,&ind[i], 0, 0, OCI_DEFAULT))
  53. {
  54. ErrorProc(errhp, status);
  55. return;
  56. }
  57. }
  58. //代码5.6,处理SQL的第六步,取值
  59. int row=0;
  60. CString tempstr;
  61. while((OCIStmtFetch(stmthp, errhp,1,OCI_FETCH_NEXT,OCI_DEFAULT))!=OCI_NO_DATA)
  62. {
  63. row = row+1;
  64. m_grid.SetRows(row+1); //根据数据的行数动态设置表格控件的最大行数
  65. tempstr.Format ("%d",row);
  66. m_grid.SetTextMatrix(row,0,tempstr); //设置序号
  67. for(i=0; i<(int)col_num; i++)
  68. {
  69. tempstr=(char*)colbuf[i];
  70. tempstr.TrimRight(' '); //删除右空格
  71. //把获取的用户的基表的数据赋予字段数值数组
  72. m_grid.SetTextMatrix(row,i+1,tempstr);
  73. }
  74. }
  75. SQL="";
  76. }

oracle oci 调用 1的更多相关文章

  1. 基于Oracle OCI的数据访问C语言接口ORADBI .

    基于Oracle OCI的数据访问C语言接口ORADBI cheungmine@gmail.com Mar. 22, 2008   ORADBI是我在Oracle OCI(Oracle 调用接口)基础 ...

  2. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  3. .NET易忘备留 ORACLE存储过程调用

    1.Oracle存储过程调用[返回信息,单体或者列表] public IResult FundBuild(string partnerId,string userId, DateTime beginD ...

  4. Qt编译Oracle OCI驱动

    最近使用qt开发了一个访问数据库的工具, 默认使用ODBC驱动注入的方式,后来发现Oracle中ODBC驱动注入经常失败. 后来就想直接使用OCI方式访问,而默认情况下Qt只有Sqlite和ODBC驱 ...

  5. oracle 存储过程 调用动态sql

      oracle 存储过程 调用动态sql CreationTime--2018年8月16日11点25分 Author:Marydon 1.错误实现方式 --开始时间拼接' 00:00:00' V_S ...

  6. Oracle OCI操作UDT相关学习(二)

    沿用 Oracle OCI操作UDT相关学习 一文中定义的类型和表. 1.更改数据 在sqldeveloper 中更新数据, update dxl.cust set addr.street='a11' ...

  7. Oracle 存储过程调用语句

    #oracle 存储过程调用语句declare v_custName varchar2(10); --客户姓名 v_num number; --订单分布天数 v_time number; --每日订单 ...

  8. oracle 存储过程调用 执行

    oracle 存储过程调用 博客分类: 数据库相关   oracle存储过程 2011年02月11日 星期五 14:47 SQL中调用存储过程语句: call procedure_name(); 调用 ...

  9. Oracle OCI操作UDT相关学习

    1.Oracle数据类型 Oracle的数据类型如下 字符串类型 char nchar varchar2 nvarchar2 数值类型 int number integer smallint 日期类型 ...

随机推荐

  1. 排序算法及其java实现

    各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort) 1. 基本思 ...

  2. ‘close’ was not declared in this scope

    ‘close’ was not declared in this scope ‘read’ was not declared in this scope ‘sysconf’ was not decla ...

  3. LeetCode 110 Balanced Binary Tree(平衡二叉树)(*)

    翻译 给定一个二叉树,决定它是否是高度平衡的. (高度是名词不是形容词-- 对于这个问题.一个高度平衡二叉树被定义为: 这棵树的每一个节点的两个子树的深度差不能超过1. 原文 Given a bina ...

  4. 用vue开发顶端粘滞效果的页面

    概述 通常一个长的页面,需要滚动浏览,有部分重要信息会随着滚动而看不见,因此需要粘滞在顶端,而又不影响滚动浏览,这个demo基于vue2,实现这个需求. 详细 代码下载:http://www.demo ...

  5. PHP递归方式把一个数组里面的null转换为空字符串”的方法

    在一些接口的调用中,直接查询数据库出来的字段可能为null字段,但是为了简便前端的判断,需要把null转换成空字符串'',这个时候就需要递归的方式进行.直接上代码如下: //递归方式把数组或字符串 n ...

  6. 控制器中添加DB类才可以操作数据库表中的数据

    必须使用DB:  use DB;

  7. oracle和其他数据库对表名、列名的长度限制

    ============== 数据库 表名列名长度限制问题 今天修改数据库表名,感觉现有的定义列名都无含义...修改后被同事告知,列名有点长,怕有的数据库不支持.. 我头一次听说数据库表名和列名长度限 ...

  8. AutoFac文档11(转载)

    目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 元数据 Autofac ...

  9. AutoFac文档9(转载)

    目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 关系类型 Autofa ...

  10. hibernate 中集合的保存

    一.开发流程 1)引入jar包,注意引入数据库驱动包 2)创建数据库表 //创建用户表 CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, un ...