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

人大金仓KingbaseES-JDBC学习之关键知识问题及解答

数据猿 2023-11-08
513


关键字:

KingbaseES、JDBC、人大金仓

如何更新结果集的值?

答:更新结果集的值需要先在创建语句对象时,设置结果集类型和并发类型。

结果集类型包括:

ResultSet.TYPE_FORWARD_ONLY(只可向前滚动); ResultSet.TYPE_SCROLL_INSENSITIVE(双向滚动,不及时更新);ResultSet.TYPE_SCROLL_SENSITIVE(双向滚动,并及时跟踪数据库更新)

并发类型包括:

ResultSet.CONCUR_READ_ONLY(只读)

ResultSet.CONCUR_UPDATABLE(可更新)

然后,我们可以对结果集进行插入、更新和删除操作。下图展示了,对TEACHER表的查询结果集进行插入、更新和删除操作的前后结果对比。

具体测试代码详见附录:问题1。

如何操作一个数组类型?

答:通过语句执行,返回的结果集中,数组是以Array类型形式存在的。需要,先取出Array对象,然后再根据具体的数据类型取出数据。

数组类型的插入、更新操作可以使用preparedStatement的占位符,或者直接在sql语句中带有数据。其中,使用占位符设置具体数据时,需要注意数据类型应该是Array类型。

数组类型读取时有两种方式:一种是使用Array对象,一种是使用ResultSet结果集。

下图展示了对数组类型数据的插入与查找的测试结果:

具体测试代码详见附录:问题2。

如何对大对象类型进行增删改查?

答:创建大对象类型Blob和Clob:Oracle兼容模式中create table可以直接使用Blob和Clob数据类型。PG兼容模式中,大对象类型存在一张系统表中,用户表存放实际存储地址,类型为oid。

  1. 查询

使用结果集的getBlob()和getClob()方法读取Blob和Clob类型数据。并可以分别使用getSubString(start,end)和new String (blob.getBytes(strart,end))方法将其以字符串方式显示。

  1. 插入

在 PreparedStatement 类中,可以使用setBlob()和setClob()方法把 Blob和 Clob对象当成参数传递给SQL语句。在 oracle 兼容模式下,通过 PrepareStatement 对象的 setBinaryStream、setBytes 和 setObject 可以设置语句中的 Blob 类型的参数; 使用 setCharacterStream、setString、setAsciiStream 和 setObject 方法可以设置 Clob 类型的参数。

插入大对象类型还有一种方式是使用:empty_clob(), empty_blob()(详见代码仓库中测试用例OracleBlobClobTest)

  1. 修改

通过查询数据库,从结果集中提取数据对象,按需求修改数据。(注意:查询数据库的sql语句一定要加上“for update”,否则会报未加锁的错误)

Clob对象数据可以使用setCharacterStream、setAsciiStream和setString方法更新Clob字段。它们分别以字符流、比特流和字符串从指定位置开始替换原值。

Blob对象数据可以使用,setBinaryStream和setBytes方法更新Blob字段。它们分别以比特流和比特数组从指定位置开始替换原值。

  1. 删除

使用delete语句进行删除

下图展示了对Clob和Blob类型数据操作的实践结果:

具体代码详见附录:问题3。

总结

  1. 学习KingbaseES客户端编程接口指南-JDBC,了解JDBC的连接、语句、结果集和元信息等基础结构。
  2. 在解答问题的同时,编写测试用例,可增强对问题的认识。

参考文档:

附录

问题1代码:

问题2代码:

问题3代码:

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

评论