返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

使用GBaseDataAdapter填充DataSet
GBaseDataAdapter 提供了SelectCommand 属性,当为这些属性的值定义了
GBaseCommand 对象并且设置了SQL 查询语句后可使用Fill 方法填充 DataSet。

以下代码展示如何使用GBaseDataAdapter 填充DataSet:
C# 示例:
String qryString = "SELECT * FROM test";

GBase 8a 程序员手册ADO.NET 篇


- 46 -

南大通用数据技术股份有限公司
GBaseDataAdapter adapter = new GBaseDataAdapter(qryString, conn);
DataSet test = new DataSet();
adapter.Fill(test, "test");

语法格式
CREATE/ALTER USER
user [auth_option]
[expiration_option | lock_option | host_option] ...
host_option: {
hosts 'host_list'
}
命令说明
host_list 的值可以为IP 或主机名,允许包含多个,使用空格“ ”分割,使用“%”
和“_”做通配符(通配符用法同原host 功能)。默认host_list 为空,此时登录无
host 限定。登录的IP 或主机名在列表中才允许用户登录。
创建用户时指定user@host 中host 为具体固定唯一的字符串时,不能在此指定账户
登录列表hosts,如果非要指定,hosts 应与host 相同。

行大小写转换。

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 用户经常会遇到的。本节讲述它们的症状
和解决办法。