小编c_b*_*eez的帖子

Derby选择子查询不起作用

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,这种方法很好用.

上面的查询只是一个例子,我知道我可以选择用户名,最初点击而不需要嵌套查询.

sql database select derby subquery

3
推荐指数
1
解决办法
3039
查看次数

保持Java程序无限运行的方法是有效的吗?

我的程序从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端口.

java concurrency multithreading

3
推荐指数
1
解决办法
2289
查看次数

标签 统计

concurrency ×1

database ×1

derby ×1

java ×1

multithreading ×1

select ×1

sql ×1

subquery ×1