行大小写转换。
jdbc 版本从 build55.4.1 开始支持通过jdbc url 参数控制对
getColumnName 和getColumnLabel 方法返回的结果进行大小写转换。
样例如下:
1)转换为大写
String url="jdbc:gbase://192.168.7.126:5258/gbase?user=bht&password=111111&
GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司
- 177 -
caseSensitiveFlag=2";
如下代码label,name为大写
String sql = "select col1 tzm ,Col2 列a,col3 Hj from bht2";
ResultSet rs = this.stm.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
while(rs.next()){
for(int i=1;i<=count;i++){
String label = rsmd.getColumnLabel(i);
String name = rsmd.getColumnLabel(i);
}
}
rs.close();
GBase 8a 程序员手册JDBC 篇
- 178 -
南大通用数据技术股份有限公司
8 采用kerberos 认证方式与GCluster
或8a 单机连接
Jdbc 从build54.4.7 版本开始支持支持kerberos 认证方式与集群或者8a
单机进行连接。
使用前必须确保数据库版本支持kerberos 认证并且已经配置好
kerberos 认证相关服务。具体使用可以参考数据库手册要求。
以下操作仅在认为集群或者8a 已经配置好kerberos 相关服务基础上进行
的操作。
1:需要从集群获取keytab文件,拷贝到某一目录
2:需要执行kinit命令初始化票据凭证,最后一个参数为kerberos client端
principal name
1)linux: kinit -kt /opt/gcluster/ktest1.keytab ktest1@gbase.cn
2)window:kinit -k -t D:\\svn\\kerberos\\ktest1.keytab
ktest1@gbase.cn
3:url进行设置
enableKerberosFlag=true :开启认证方式
clientPrincipalName=ktest1 :设置客户端principal name,注意不需要
输入@gbse.cn
kerberosKeyTab="D:\\svn\\kerberos\\ktest1.keytab",设置keytab路径
4:从kerberos服务器获取krb5.conf文件(linux默认安装在/etc下面)
,如果
jdbc部署在linxu服务器下,直接拷贝到/etc下即可;如果部署在windows
将其修改名字为krb5.ini 然后复制到C:\Windows 下面,注意里面的路
径信息请修改为实际存在的路径。
5: 确保jdbc 所在机器的时间与kerberos 服务器时间一致
以上配置正确后可以使用如下方式进行连接
//是否输出认证过程中重要参数信息。生产环境可以不设置。
GBase 8a 程序员手册JDBC 篇
南大通用数据技术股份有限公司
- 179 -
System.setProperty("sun.security.krb5.debug","true");
System.setProperty("sun.security.jgss.debug","true");
String url
="jdbc:gbase://192.168.6.122:5258/test?user=ktest&traceProtocol=false"
+ "&profileSql=false"
+ "&enableKerberosFlag=true"
+ "&clientPrincipalName=ktest1"
+"&kerberosKeyTab=D:\\svn\\kerberos\\ktest1.keytab"
;
Class.forName("com.gbase.jdbc.Driver");
Connection conn = DriverManager.getConnection(url);
Statement st = conn.createStatement();
st.execute("insert into bht1 values(1,'bht')");
st.setMaxRows(2);
ResultSet rs =st.executeQuery("select * from bht1");
while(rs.next()){
System.out.println(rs.getString(1)+rs.getString("b"));
}
conn.close();
System.out.println("fin");
从上代码可以看到连接集群不再需要使用password,而仅仅只需要
kerberos 服务器认证过的user 即可。
GBase 8a 程序员手册JDBC 篇
- 180 -
南大通用数据技术股份有限公司
9 GBase JDBC 常见问题和解决办法
有一些问题看起来是GBase
JDBC 用户经常会遇到的。本节讲述它们的症状
和解决办法。