Derby不允许您选择其他查询的返回关系吗?
例如,此查询工作正常:
SELECT *
FROM users, stats
WHERE users.uid = stats.uid;
Run Code Online (Sandbox Code Playgroud)
但是此查询返回错误:
SELECT username, hits
FROM (
SELECT *
FROM users, stats
WHERE users.uid = stats.uid
);
Run Code Online (Sandbox Code Playgroud)
错误如下:
Error: Syntax error: Encountered "<EOF>" at line 1, column 83.
SQLState: 42X01
ErrorCode: 30000
Run Code Online (Sandbox Code Playgroud)
我已经习惯了Oracle,这种方法很好用.
上面的查询只是一个例子,我知道我可以选择用户名,最初点击而不需要嵌套查询.
我的程序从main开始,并启动一些执行程序工作的线程(读取传感器,更新数据库,向屏幕显示信息).我希望程序无限期运行.
在我的主要线程开始之后的那一刻,我只有:
public static void main(String []args)
{
//threads start here
while(true) {}
}
Run Code Online (Sandbox Code Playgroud)
显然这是有效的,但我想知道它是否浪费资源循环.
有没有一种有效的方法来保持程序运行.有优雅的退出方式吗?即在main中启动一个侦听键盘或事件的事件监听器?
如果它更好,我也试过这个:
while(true) {
TimeUnit.HOURS.sleep(1);
}
Run Code Online (Sandbox Code Playgroud)
编辑:有关线程的更多信息:
我不确定它们是什么类型的线程.我正在实现一个名为gnu.io.SerialPortEventListener的接口,它启动并处理线程,因此它从我身上抽象出来.我将不得不看看API,虽然我认为它没有很好的文档记录,或者我认为是源代码.它们使JVM在IDE(blueJ)中保持活动状态,但在命令行上运行程序时则不行.我只是使用接口的方法将一个事件监听器添加到一个启动线程运行的COM端口.