2013-02-14 59 views
0
String query = "SELECT SUM(totalcost) FROM"+m+""; //where totalcost is my column name 

    ResultSet rs=st.executeQuery(query);     


    while(rs.next()) 
    { 

    System.out.println("SUM(user_id)="+rs.getString(1));        

    } 

這段代碼有什麼問題?我的例外是:如何在mysql中使用jdbc動態地傳遞表名?

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:在「字段列表」

+3

「from」後面缺少空格。沒有它,它將最終成爲'... fromtablename ...' – 2013-02-14 20:32:18

+0

錯誤消息表示該表沒有名爲totalcost的列。可以? – Joni 2013-02-14 20:34:51

+0

@juergend給出了差距後,我仍然有同樣的例外 – Giri 2013-02-14 20:35:06

回答

2

嘗試在from標記後面添加空格;

String query = "SELECT SUM(totalcost) FROM "+m+""; 
+0

非常感謝我的代碼工作正常。 – Giri 2013-02-14 20:43:14

0

你能確認你有所謂的「TOTALCOST」爲數據庫中的列未知列「TOTALCOST」你正在參考的表格?如果是這樣,我認爲當您替換「m」變量時表名可能不正確。

此外,我會使用一個準備好的語句來構建MySQL查詢。讓我知道你是否需要更多的幫助。

您不需要擔心在查詢的SUM(totalcost)部分使用「AS totalcost」,因爲在選擇結果時,您正在選擇:「rs.getString(1)」,它將返回結果集中行的第一列中的值。

+0

是的,它確保我有一個列名稱totalcost,我也使用準備好的聲明,但它也不會工作。 – Giri 2013-02-14 20:39:56

+0

@jeff storey m由我的表名動態地給出 – Giri 2013-02-14 20:41:20

+0

您可以驗證您傳遞給MySQL的表名是否完全匹配。根據底層操作系統和數據庫引擎的不同,表名可能區分大小寫;見http://dev.mysql.com/doc/refman/5.5/en/identifier-case-sensitivity.html – 2013-02-14 20:45:26

相關問題