我个人没有使用过 Oracle 做开发,不过以前就知道,要让 DbEntry 支持它是很困难的。最近,其它功能趋于完善,也考虑加入 Oracle 的支持,而且,因为项目论坛上的一些提议,已经加入了 Firebird 的支持,而 Firebird 也是使用序列的方式产生自增主键值,以前知道的 Oracle 的困难点已经跨越了一多半。
于是开工,仿照 Firebird,参考 Hibernate,编写了 Oracle 的方言,看起来很美。 用例子程序测试,马上发现问题,Decimal 无法转换为 Int32。是啊,Oracle 不支持 int, bigint, smallint 这些数据类型,在 hibernate 的方言里,也是使用的 number(10,0) 之类的方式,我也是一样,这样,返回的是 Decimal 也在情理之中。
于是在 Oracle 管理程序中,使用一些 SQL 语句测试,发现,Create 语句中,支持 INT,查看创建出的表,是 number(*,0)。不指定数字大小么?也是一个思路,于是把主键设置为 number(*,0),输入1,支持,输入12位数字,还是支持,用程序访问,DataReader.GetInt32(),在第一个数字的时候正常返回,遇到第二个数字出异常,也算合理。但是发现,如果使用 DataReader[index] 之类的方式取数据的话,还是得到 Decimal。
也许是微软提供的 Provider 不完善吧,于是换用 Oracle 自己提供的 ODP.NET,这一次,连 DataReader.GetInt32() 也会出异常了……
本来挺生气,可是仔细想一想,也就明白了,数据库中根本就没有这个数字是 Int32 还是 Int64 之类的信息,作为驱动程序,自然也无法智能的猜到数据类型了。
已经走了这么远了,就应该走完吧,既然数据库本身没有这些信息,就由我来告诉它吧。编写了一个 StupidDataReader 用来包装 OracleDataReader,在构造函数中把各个列的类型信息传递给它,由它在内部做类型转换工作。
测试,成功。呼呼,终于支持了 Oracle 。
分享到:
相关推荐
Flink JDBC Connector 支持Oracle , Flink 1.13.6 支持Oracle 11.2.0.4
标题 "kettle支持oracle12c" 暗示了我们正在讨论的是Pentaho Data Integration(Kettle)工具与Oracle 12c数据库的兼容性问题。Kettle,也称为Spoon,是一款强大的ETL(提取、转换、加载)工具,它允许用户从各种...
oracle jdbc 驱动,支持oracle 19c
Nacos是阿里巴巴开源的一款分布式服务治理和配置中心的框架,版本2.2.3提供了对Oracle数据库的支持。本文将深入探讨如何在Nacos 2.2.3中配置Oracle源码,以便在分布式环境中实现高效稳定的配置管理和服务发现。 ...
4. **Advanced Queuing (AQ)**:Oracle的队列技术,允许在数据库中存储和传输消息,支持异步处理和事务一致性。 5. **LOB(Large Object)支持**:ojdbc6驱动支持BLOB、CLOB、NCLOB等大数据类型,允许存储和检索大...
在Linux环境下安装Oracle数据库时,如果默认的字符集设置为WE8ISO8859P1,将无法支持中文字符。具体表现为,在客户端录入中文数据时能够正常显示,但提交后再次查询时中文会显示为乱码(如“???”)。这一现象主要是...
Oracle支持库是Oracle公司提供的一系列重要资源,用于帮助用户维护和优化其Oracle数据库系统。这个库包含了各种文档、补丁、更新、故障排除工具、性能调优指南以及社区论坛等,确保用户能够及时获得所需的技术支持和...
cx_Oracle是Python编程语言中用于连接Oracle数据库的一个模块。该模块遵循Python数据库API规范,并且适用于Oracle 11.2和12.1版本,同时兼容Python 2.x和3.x版本。cx_Oracle模块通过使用Oracle客户端库来实现与...
本篇文章将深入探讨sysbench的两个版本——sysbench0.5和sysbench1.1,并详细阐述它们对Oracle及达梦数据库的支持。 首先,sysbench0.5是针对早期版本的sysbench,它主要专注于MySQL数据库的性能测试,但也提供了对...
解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码...
本教程将详细介绍如何在Nacos中适配Oracle 11g,并提供亲测可用的Oracle脚本。 首先,我们需要了解Nacos对数据库的依赖。Nacos默认使用H2数据库进行存储,但为了满足大规模生产环境的需求,通常会选择更为强大的...
针对这一需求,有一个专门的Oracle Package包,它支持UTF8编码,能够帮助我们实现汉字到拼音的转换。这个包通常包含了存储过程和函数,用于处理汉字与拼音之间的转换逻辑。 在Oracle中,这样的包通常是开发人员...
Nacos是阿里巴巴开源的一款分布式服务治理和配置中心的框架,其2.2.3版本针对Oracle数据库提供了专门的支持,使得在大规模集群环境下运行Nacos成为可能。本文将深入探讨Nacos与Oracle数据库的集成,以及如何在集群...
nacos2.2.3 适配 oracle 19c, nacos的oracle脚本在conf目录下面oracle.sql,部署包
在数据库连接方面,OracleClient-21C支持多种连接方式,如TCP/IP、Named Pipes、Shared Memory等,其中TNS(Transparent Network Substrate)是Oracle常用的一种网络通信协议,它提供了一种透明的方式来定位和访问...
Oracle Lifetime Support Policy 是Oracle公司对其技术产品的支持策略,旨在帮助客户最大化其支持投资,充分利用Oracle产品,并有效地规划升级策略。这个政策涵盖了Oracle的各种数据库、开发工具、中间件、管理和...
支持 Oracle 8i 以后的所有版本。 支持 Mysql 3.23 以后的所有版本。 高效直接连接Oracle和Mysql数据库。甚至不需要安装客户端。 向导式操作。 可以保存配置文件。 可以同时连接Mysql和Oracle,直接将数据导入Oracle...
- `NUMBER`:支持Oracle数据库允许的最大尺寸。超出支持范围的数值会被Oracle GoldenGate进行四舍五入或截断。 - `BINARY FLOAT`和`BINARY DOUBLE`:浮点数的支持范围和精度取决于主机机器。通常,精度可精确到16...
Oracle 11g数据库还支持高级特性,如存储过程、游标、事务管理、并发控制、索引、触发器、视图等。在开发过程中,开发者可以利用JDBC API实现这些功能,提高应用的效率和复杂性。 在实际应用中,为了优化性能和确保...
DataX-Oracle新增writeMode支持update的两个jar包已经修改好,使用方法可以看https://blog.csdn.net/qq_36802726/article/details/137118015