【发布时间】:2014-10-11 09:15:34
【问题描述】:
我在加入 2 个表时遇到了一个奇怪的问题。在java中查询不起作用,它只打印一行重复但在MySQL查询中它工作正常。我需要将这些数据写入 json 文件。我该如何解决这个问题?请帮忙。注意:表格查找见链接:Need to join 2 tables but except some rows in another table in MySQL
这是我的代码:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONObject;
import org.json.simple.JSONArray;
public class ShowData {
public void Display(){
try{
DBConnect2 dc = new DBConnect2();
PreparedStatement ps = null;
ResultSet rs = null;
Statement st= null;
BufferedWriter wr1 = new BufferedWriter(new FileWriter(new File("E:/workspace/Test/input/display.json")));
String query5 = "SELECT DISTINCT k.source, k.target, k.frequency FROM links k "
+ "LEFT JOIN logs g ON g.id = k.id "
+ "WHERE IFNULL(status, '') != 'Delete Edge' "
+ "AND 'Bush' IN( k.source, k.target )";
ps = dc.getCon().prepareStatement(query5);
rs = ps.executeQuery();
JSONObject obj = new JSONObject();
JSONObject obj1 = new JSONObject();
JSONArray list = new JSONArray();
while(rs.next()){
obj1.put("source", rs.getString("source"));
obj1.put("target", rs.getString("target"));
obj1.put("frequency", rs.getInt("frequency"));
list.add(obj1);
}
obj.put("links", list);
wr1.write(obj.toString() + "\n");
wr1.flush();
System.out.println("Done");
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(final String[] args){
ShowData sw = new ShowData();
sw.Display();
}
}
【问题讨论】:
-
JSONObject obj1 = new JSONObject();应该进入while循环。