H2数据库功能别名访问另一个功能

时间:2013-09-24 08:41:45

标签: tcp alias h2

问题是,在通过TCP运行服务器并创建别名函数SLIDEWINDOW之后 对于课程时间表,我称之为别名幻灯片窗口。但是从这个函数中,我必须查询表(任何表)以获得一些必要的信息。当我再次连接时,服务器和应用程序挂起。

CODE:

public class TimeFrame { 
public static void main(String... args) throws Exception {
    Class.forName("org.h2.Driver");
    Connection conn = DriverManager.getConnection("jdbc:h2:tcp://MYIP:9092/~/test", "sa", "");
    Statement stat = conn.createStatement();

    //Setup Table
    stat.execute("DROP TABLE IF EXISTS timeframe");
    stat.execute("CREATE TABLE timeframe (last_updated TIMESTAMP, ip int");
    stat.execute("CREATE ALIAS IF NOT EXISTS SLIDEWINDOW FOR \"h2TimeFrame.TimeFrame.slidewindow\" ");
} 
}

如果我想从SLIDEWINDOW函数访问读表,该怎么办?

public static void slideWindow(String ip){
     ...
     Connection conn = DriverManager.getConnection ("jdbc:h2:tcp://MYIP:9092/~/test", "sa", "");
     Statement stat = conn.createStatement();
     res = stat.executeQuery("SELECT * FROM timeframe  where ip = '" + ips + "' limit 1 ");
     ... 
} 

Q1。我可以用别名吗?

Q2。当我从H2服务器Web控制台或java应用程序调用别名“SELECT SLIDEWINDOW('127.0.0.1')”时应用程序挂起?

1 个答案:

答案 0 :(得分:1)

事实证明。对于别名,java函数的第一个参数可以是“Connection”,它将把处理程序传递给已建立的连接。

<强> Q1。我可以用别名吗?

我不应该再从Alias建立与数据库的连接。

<强> Q2。当我从H2服务器Web控制台或java应用程序调用别名“SELECT SLIDEWINDOW('127.0.0.1')”时应用程序挂起?

我通过将“连接”作为第一个参数传递来解决它,并像之前一样休息。像

public static void slideWindow(Connection conn, String ip){
 ...
 //Connection conn = DriverManager.getConnection ("jdbc:h2:tcp://MYIP:9092/~/test", "sa", "");
 Statement stat = conn.createStatement();
 res = stat.executeQuery("SELECT * FROM timeframe  where ip = '" + ips + "' limit 1 ");
 ... 

}