2014-02-26 102 views
0

我想編譯一個名爲FinalQuery的查詢,但其中的一部分必須放在引號內。必須進入引號內的部分是一個字符串變量。在字符串中包含變量的引號

要進入更詳細 -

  1. 這FinalQuery查詢給JFreeChart的製作餅圖。
  2. 但是,根據用戶的某些選擇,FinalQuery是在程序中編譯的。
  3. 用戶的選擇是在JComboBox中進行的。

下面是代碼 -

public class Execute extends JFrame { 
private JComboBox comboAccountName = new JComboBox(); 

public Execute() { 
    .................... 

    getContentPane().add(comboAccountName); 
    comboAccountName.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      CompileQuery(); 
     } 
    }); 

final String query = CompileQuery(); //variable query is executed in JFreeChart 

JButton btnDraw = new JButton("Draw"); 
    btnDraw.setFont(new Font("Segoe UI Symbol", Font.BOLD, 15)); 
    btnDraw.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      try { 
JDBCPieDataset hdataset = new JDBCPieDataset(DatabaseConnection.ConnectDB(), query); 
JFreeChart chart = ChartFactory.createPieChart("Query", 
         hdataset, true, true, false); 
...............} 


String CompileQuery() 
{ 
    String getAccountName = (String)comboAccountName.getSelectedItem(); 
    String FinalQuery = "SELECT status, COUNT(status) FROM main WHERE [Account Name] = "+getAccountName+" GROUP BY status"; 
    System.out.println(FinalQuery); 
    return FinalQuery; 
}; 

public static void main(String[] args) { 
    Execute frame1 = new Execute(); 
    frame1.setVisible(true); 
} 

}

但在SQL查詢的WHERE [XYZ] =?必須用引號提供。例如。 WHERE [帳戶名稱] =「John」。

目前我的查詢是一種格式 -

SELECT XYZ FROM PQR其中ABC =變量名

SELECT status, count(status) 
FROM main 
WHERE [Account Name] = getaccountName (variable) 
GROUP BY status; 

我希望把變量名引號,這樣它看起來像

SELECT xyz FROM pqr WHERE abc =「變量名稱」

SELECT status, count(status) 
FROM main 
WHERE [Account Name] = "getaccountName" (variable) 
GROUP BY status; 

請建議我如何讓我的FinalQuery字符串變量在裏面包含另一個變量的引號。

+1

我想'... WHERE [帳戶名稱] = \「」 + getAccountName +「\」 ...「;''應該可以工作 – user2989408

+0

如果你不能使用PreparedStatement,那麼只要轉義引號就可以工作,而且方法和變量名應該以Java中的小寫字母開頭 –

回答

2

但它的一部分必須在裏面引號。並且必須進入引號內的部分是字符串變量

使用PreparedStatment。它將使用適當的語法生成SQL爲您和您可以輕鬆地指定要使用的常量或變量:

String sql = "INSERT INTO Page (Name, Title) VALUES (?, ?)"; 

PreparedStatement stmt = connection.prepareStatement(sql); 

stmt.setString(1, nameVariable); 
stmt.setString(2, "Title1"); 
stmt.executeUpdate(); 
+0

我不能使用PreparedStatement。 JFreeChart是這樣設置的(更新後的問題) – satnam

相關問題