我个人没有使用过 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
Oracle支持库Oracle支持库Oracle支持库Oracle支持库Oracle支持库
数据库经典压测工具sysbench双版本 sysbench0.5支持oracle sysbench1.1 支持达梦 附详细安装文档,亲测可用
kettle支持oracle12c ,将压缩包里的jar包替换原来的jar包即可
问题描述:在Linux下安装的oracle,默认的字符集没有修改,使用的是WE8ISO8859P1,不能够支持中文, 问题表现为,客户端录入的中文数据可以显示,提交之后再查询出来后中文会显示为???。问题出在oracle服务端的字符...
解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码问题,添加中文支持解决linux下oracle中文乱码...
本文总结了oracle中支持的数据类型,可以让读者彻底明白oracle中的数据类型
nacos2.2.3-oracle版本支持集群
支持 Oracle 8i 以后的所有版本。 支持 Mysql 3.23 以后的所有版本。 高效直接连接Oracle和Mysql数据库。甚至不需要安装客户端。 向导式操作。 可以保存配置文件。 可以同时连接Mysql和Oracle,直接将数据导入Oracle...
介绍了oracle下支持向量机的一些方法,具有一定的参考价值
全能数据库管理软件,支持oracle mysql db2 mssql ,并且是免费的。无需客户端支持
ojdbc678,oracle11g驱动
2、本软件安装后,可使用自带的SQL Plus连接Oracle服务器,支持EXP、IMP命令。用户可以配合PLSQL Developer使用,为减小软件体积,没有对PL/SQL Developer打包,请用户自行下载。 3、本软件包含了OraOledb.Oracle.1...
oracle.ManagedDataAccess.dll(oracle.ManagedDataAccess.Client)全托管驱动。 此驱动对32位和64位oracle数据库具有很好的连接...另外本次版本升级新增了OracleBulkCopy类,对于大容量数据写入Oracle提供了良好支持。
Delphi ADO连接Oracle数据库报数据类型不支持
可连接Oracle8i、Oracle9i https://blog.csdn.net/qq_29301853/article/details/82841475
oracle汉字转拼音package包-支持UTF8
本地适配的oracle 版本为11g,如需其他版本自行替换驱动版本
oracle修改版本工具 很方便,亲测可用,支持oracle10g,11g oracle修改版本工具 很方便,亲测可用,支持oracle10g,11g
Oracle最大连接数