暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 三金先生 2023-12-18
249

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论