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()并在重新执行前再次设置准备好语句的所 有参数。

相关推荐
TGITCIC3 小时前
丢掉向量数据库!推理型 RAG 正在重新定义长文档问答的准确边界
数据库·ai大模型·推理·ai搜索·大模型ai·rag增强检索·ai检索
xfhuangfu4 小时前
Oracle AI db 26ai中借助dbca创建pdb的过程
数据库·oracle
heze094 小时前
sqli-labs-Less-28a
数据库·mysql·网络安全
久违8164 小时前
SQL注入攻击核心技术深度总结
数据库·sql·oracle
2401_891450464 小时前
Python上下文管理器(with语句)的原理与实践
jvm·数据库·python
helloworldandy4 小时前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
「光与松果」4 小时前
Oracle中v$session视图用法
数据库·oracle
木辰風4 小时前
PLSQL自定义自动替换(AutoReplace)
java·数据库·sql
无限码力4 小时前
华为OD技术面真题 - 数据库MySQL - 3
数据库·mysql·华为od·八股文·华为od技术面八股文
heartbeat..4 小时前
Redis 中的锁:核心实现、类型与最佳实践
java·数据库·redis·缓存·并发