【发布时间】:2014-02-26 18:01:11
【问题描述】:
我想编译一个名为 FinalQuery 的查询,但它的一部分必须在引号内。必须进入引号内的部分是一个字符串变量。
更详细的-
- 将此 FinalQuery 查询提供给 JFreeChart 以制作饼图。
- 但 FinalQuery 是在程序中编译的,根据用户的某些选择。
- 用户的选择是在 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 [Account Name] = "John"。
目前我的查询是一种格式 -
SELECT xyz FROM pqr WHERE 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 字符串变量在其中包含另一个变量的引号。
【问题讨论】:
-
我认为
... WHERE [Account Name] = \""+getAccountName + "\"...";应该可以工作。 -
如果您不能使用 PreparedStatement,只需转义引号即可。此外,Java 中的方法和变量名称应以小写字母开头。