1

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

代码:

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')”时,应用程序挂起?

4

1 回答 1

1

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

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 ");
 ... 

}

于 2013-09-24T09:27:05.777 回答