2017-01-11 62 views
-1

即時在我的java程序中使用嵌入式hsql數據庫。 我想寫一個HSQL聲明是這樣的:在Java中使用HSQL Statenment並不起作用

statement.executeQuery("SELECT sum(Points) FROM Table"); 

起初,我想這一個:

String column = "Points"; 

statement.executeQuery("SELECT sum(\""+column+"\") FROM \""+table+"\""); 
java.sql.SQLException: Column not found: Points 

下一個:

statement.executeQuery("SELECT sum(POINTS) FROM \""+table+"\""); 
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: POINTS 

接着再試試,應該從來沒有工作,但只爲你:-)

statement.executeQuery("SELECT sum(\'"+column+"\') FROM \""+table+"\""); 
java.sql.SQLSyntaxErrorException: incompatible data type in operation 

如果我試試這個:

statement.executeQuery("SELECT \""+column+"\" FROM \""+table+"\""); 

運行完美

只是爲了顯示你,我的列在我的表中。

本聲明:

SELECT sum("Points") as test FROM "MyTable" 

運行在松鼠客戶端3.7版

與我的問題你知道嗎?

回答

0

,在松鼠工作應該工作相同的語句。這是與Java引用相同的聲明:

statement.executeQuery("SELECT sum(\"Points\") FROM \"MyTable\""); 

它看起來像你連接到從你的程序和SQuirrel不同的數據庫。嘗試在SQuirrel和程序中使用與數據庫文件相同的絕對路徑。您無法同時連接,因此,在連接程序之前,需要關閉SQuirrel中的數據庫。

+0

這不是問題所在。我的java程序連接到數據庫時,松鼠關閉。 – Hades85

+0

問題是您沒有連接到相同的數據庫文件。 – fredt

+0

問題不在於此!松鼠致力於相同的分貝。我認爲總結聲明需要其他報價。 – Hades85

0

這是我進口

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

這Statment也無法運行:

對別人也許
statement.executeQuery("SELECT sum(\"Points\") FROM \"MyTable\""); 

SOLUTION:

"SELECT sum(\"Punkte\") as TEST FROM \"Match_Stats\""); 
while(table_01.next()){ 
    players.get(i).setPoints(table_01.getInt("TEST")); 
} 

別名來測試是關鍵。

+0

在你的程序中,你有什麼'String table = ???' – fredt

+0

好吧,我知道了!我需要爲列點寫一個別名。 「SELECT sum(\」Points \「)as TEST FROM \」MyTable \「」);問題不是Statement,而是table_01.getInt(「Points」)。將其更改爲table_01.getInt(「TEST」),它工作。有人知道爲什麼? – Hades85

+0

這是因爲sum(「Points」)不是名爲'「Points」的列。 – fredt