6.1.2 数据库查询的默认模式

大部分关系数据库系统都支持为数据库中包含的表和其他对象创建一个额外的名称空间,即模式(schema)。一个模式中可以包含表、视图以及其他对象。不同模式中可以有名称相同的表或视图,而同一模式中不允许有名称相同的对象存在。通过SQL语句“CREATE SCHEMA”可以创建新的模式。当访问某个模式中包含的表或视图等对象时,需要使用模式名称作为前缀来访问,否则无法找到相应的对象。比如,对于一个名为“DEMO_SCHEMA”的模式中的“author”表,在SQL语句中应该使用“DEMO_SCHEMA.author”来引用。如果每次都要加上模式名称作为前缀,那么使用起来会比较麻烦。JDBC 4.1为Connection接口添加了一对新的方法getSchema和setSchema,用来获取和设置数据库操作时使用的默认模式名称。当通过setSchema进行设置之后,在SQL语句中就不再需要使用模式名称作为前缀了。代码清单6-2给出了使用setSchema方法的示例。一般来说,如果希望使用setSchema方法,那么应该在从Connection接口中创建出来的Statement对象被使用之前进行设置,否则可能会造成默认的模式无法生效。

代码清单6-2 setSchema方法的使用示例


public void setSchema()throws SQLException{

try(Connection connection=DriverManager.getConnection("jdbc:derby://localhost/java7book")){

connection.setSchema("DEMO_SCHEMA");

try(Statement stmt=connection.createStatement();

ResultSet rs=stmt.executeQuery("SELECT*FROM author")){

while(rs.next()){

System.out.println(rs.getString("name"));

}

}

}

}