本章节仅以java语言为例,介绍如何通过JDBC方式连接DQL。通过对本章节的学习,可以让您快速了解使用方法。
DQL JDBC连接有以下两种形式:
第一种,需要部署并启动DQL Server,部署步骤参考DQL Server部署小节,示例代码:
public void DQLServerJDBC() {
Connection con=null;
try {
//建立连接
Class.forName("com.esproc.dql.jdbc.DQLDriver");
con = DriverManager.getConnection("jdbc:esproc:dql:// 127.0.0.1:3368/datalogic","sa","sa");
//创建执行DQL语句
PreparedStatement stmt = con.prepareStatement("SELECT EmpID,Name FROM Employee", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet set = stmt.executeQuery();
…….
} catch (SQLException e){
System.out.println(e);
}finally{
//关闭数据集
if (con!=null) con.close();
}
}
第二种, DQL JDBC嵌入式用法,部署步骤参考嵌入式DQL部署小节。
下面将结合角色+可视文件+宏文件,同时介绍如何实现用户权限控制:
通过demo.glmd文件生成可视文件oeid.gvsb,给Orders表配置条件可视:

宏配置文件macro.json内容:
{"user1":{"EmployeeID":"1"},"user2":{"EmployeeID":"2"}}
以上json串表示登录用户user1时通过宏传递参数EmployeeID=1,登录user2时传递参数EmployeeID=2。
示例代码:
public void DQLJDBC() {
Connection con=null;
try {
//建立连接
Class.forName("com.esproc.dql.jdbc.DQLDriver");
//该示例中配置文件及元数据等文件位于项目类路径下
con = DriverManager.getConnection("jdbc:esproc:dql://?config=raqsoftConfig.xml&glmd=demo.glmd&gvsb=oeid.gvsb¯o=macro.json&user=1");
//创建执行DQL语句
PreparedStatement stmt = con.prepareStatement("SELECT * FROM Orders", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet set = stmt.executeQuery();
…….
} catch (SQLException e){
System.out.println(e);
}finally{
//关闭数据集
if (con!=null) con.close();
}
使用角色user1,执行后返回结果:

使用角色user2 ,url改为:jdbc:esproc:dql://?config=raqsoftConfig.xml&glmd=demo.glmd&gvsb=oeid.gvsb¯o=macro.json&user=2 ,执行后返回结果:

服务器中的宏定义文件还可通过set macro命令动态修改,具体操作可参考动态修改宏。