Проблема заключается в том, что после запуска сервера через TCP и создания функции псевдонима SLIDEWINDOW для таймфрейма класса я называю псевдоним slidewindow. Но изнутри этой функции я должен запросить таблицу (любую таблицу), чтобы получить необходимую информацию. Когда я снова подключаюсь, сервер и приложение зависают.H2 Функция базы данных Псевдоним доступа к другой функции
КОД:
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. Приложение зависает, когда я вызываю псевдоним «SELECT SLIDEWINDOW (« 127.0.0.1 »)« либо с веб-консоли сервера H2, либо из приложения java?
Другим решением является использование специального JDBC URL 'JDBC: По умолчанию: connection' внутри функции, а это означает' Соединение Conn = DriverManager.getConnection ("JDBC: по умолчанию: соединение"); ' –
@ThomasMueller благодарит – Saad