GBASE南大通用数据库 GBase JDBC API 实现要点

GBASE南大通用:

 DatabaseMetaData

DatabaseMetaData 提供数据库的结构信息。

外键信息(getImportedKeys、getExportedKeys()和 getCrossReference()) 仅仅对 GsDB 类型的表有效,但是驱动是通过 SHOW CREATE TABLE 来获取相关信 息的,所以当其他存储引擎支持外键,驱动程序同样能支持他们。

 Driver

使用 Class.forName("com.gbase.jdbc.Driver")加载驱动,在使用 GBase 8a 8.3.81.x 版本的 JDBC 驱动(jre1.6 及以上版本)时可以省去注册驱动,由 java 虚拟机自动完整驱动注册。

 PreparedStatement

在 GBASE南大通用数据库GBase 8a server 中不支持预处理功能,PreparedStatement 是由驱动来 实现的。因此,驱动程序不支持 getParameterMetaData()或 getMetaData()等, 因为其需要客户端上具有完整的 SQL 语法分析程序。

当服务器支持时,会使用服务端预处理语句和二进制编码的结果集。

当使用一个带有 large 参数的服务器端预处理命令时要小心,这些参数是 通过 setBinaryStream()、setAsciiStream()、setUnicodeStream()、setBlob() 或 setClob()设置的。如果用户将 large 参数修改为不带 large 的参数后重新执 行语句,那么此用户必需先调用 clearParameters()并重置所有的参数。原因如 下:

 当设置参数时(在执行预处理语句前),驱动程序会将 large 数据 out-of-band 发送到服务器端预处理语句;

 一旦完成了这些,这个在客户端用于读取数据的流就会被关闭(按照 JDBC 规范),并且不能再次读取流;

 如果一个参数从 large 变为非 large,那么驱动必须重置服务器端的预 处理语句状态,这样就可以允许被改变成的参数替代先前的 large 值 了。这会删除掉所有已经发送给服务器的 large 数据,因此要求通过etBinaryStream()、 setAsciiStream()、setUnicodeStream()、 setBlob()或 setClob()方法重发数据。 因此,如果用户想把一个参数的 large 类型改成一个非 large 的类型,那 么用户必须调用 clearParameters()并在重新执行前再次设置准备好语句的所 有参数。

相关推荐
拿破轮1 小时前
查询Hologres或postgresql中的数据
数据库·postgresql
声声codeGrandMaster2 小时前
django之账号管理功能
数据库·后端·python·django
Elastic 中国社区官方博客3 小时前
使用 LangGraph 和 Elasticsearch 构建强大的 RAG 工作流
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
AscendKing3 小时前
mongo客户端操作mongodb记录
数据库·mongodb
千千寰宇3 小时前
[设计模式/Java] 设计模式之解释器模式【27】
数据库·设计模式
BXCQ_xuan3 小时前
Typecho博客网站头部SEO优化完整指南
运维·服务器·数据库·php·web
施嘉伟4 小时前
Oracle 11g RAC手动打补丁详细步骤
数据库·oracle
my_realmy5 小时前
SQL 查询进阶:WHERE 子句与连接查询详解
java·开发语言·数据库·sql
游王子5 小时前
Milvus(7):Schema、主字段和自动识别
数据库·milvus
forestsea6 小时前
MySQL 调优
数据库·mysql·性能优化