【无标题】

142 篇文章 0 订阅
7 篇文章 0 订阅

GBase8s jdbc开启元数据大小写敏感功能
通过jdbc操作数据库建表及查询数据时是不区分大小写的,建表后数据库系统表保存的表的元数据统一都是小写的。在有些场合可能需要强制开启大小写敏感功能,本文将介绍如何使用该功能。
jdbc支持通过url配置参数delimient来开启大小写敏感功能,支持值含义如下:
delimient=y:开启敏感功能,sql语句需要使用双引号括起来,开启后数据后将按照实际表,列的大小写存储元数据,通过jdbc获取指定列的值时也需要使用列的实际元数据的大小写形式。
delimident=n:默认值,忽略大小写,sql语句中表名列名不支持使用双引号包围,使用大写或者小写都能查询到指定列的数据。
下面通过测试用例讲解
1、执行测试用例如下:
public class TestJdbcDelidiment {
public static void main(String[] args) throws Exception {

   String url = "jdbc:gbasedbt-sqli://localhost:19088/zhtest:GBASEDBTSERVER=gbase01;DB_LOCALE=zh_CN.utf8;CLIENT_LOCALE=zh_CN.utf8;delimident=y";
   String  username = "gbasedbt";
   String password = "GBase123";
   Class.forName("com.gbasedbt.jdbc.Driver");
   Connection conn = DriverManager.getConnection(url,username,password);
    create(conn);
   select(conn);
   conn.close();

}

private static void create(Connection conn) throws SQLException {
    String sql ="create table \"TestDelidiment\" (\"myID\" varchar(100), \"myName\" varchar(100), \"AGE\" int)";
    PreparedStatement pst = conn.prepareStatement(sql);
    pst.execute();
    pst.close();
}

private static void select(Connection conn) throws SQLException {
    Statement st = conn.createStatement();
    st.execute("insert into \"TestDelidiment\" values ('1','name','30')");
    ResultSet rs = st.executeQuery("select * from \"TestDelidiment\"");
    while(rs.next()){
        System.out.println(rs.getString("myID")+","+rs.getString("myName")+","+rs.getString("AGE"));
    }
    rs.close();
    st.close();
}

}

2、执行结果如下:
在这里插入图片描述

3、查看系统表元数据验证元数据存储是否区分大小写
在这里插入图片描述

4、总结
开启delimient=y后创建表数据库会严格按照大小写内容存储元数据,jdbc在执行插入查询等sql时需要确保使用的表或者列元数据要与系统表一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值