[英]resultset print to txt file
我想将查询结果打印到.txt文件。 怎么做? 我尝试使用或不使用.tostring进行打印,但这仍然不是我想要的结果。
这是我的代码
try {
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ta", "root", "root");
Statement st = con.createStatement();
String query = "select count(no) as 'jumlah',kelompok from email group by kelompok";
//System.out.println(query);
ResultSet rs = st.executeQuery(query);
while (rs.next()) {
dataset.setValue( Integer.parseInt(rs.getString(1)), "Jumlah", rs.getString(2));
}
try {
PrintStream out = new PrintStream(new FileOutputStream("OutFile.txt"));
String jumlahemail = "select count(*) from email";
ResultSet rs1 = st.executeQuery(jumlahemail);
out.println("E-mail yang diterima adalah sebanyak: "+rs1.toString());
out.println("Dengan detail: ");
out.println(rs.toString());
out.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
} catch (SQLException ex) {
Logger.getLogger(GUI.Home.class.getName()).log(Level.SEVERE, null, ex);
}
结果是:
E-mail yang diterima adalah sebanyak: com.mysql.jdbc.JDBC4ResultSet@81c868
Dengan detail:
com.mysql.jdbc.JDBC4ResultSet@8c241a
如何正确地做到这一点?
调用rs1.toString()
将获得Object
的默认toString()
实现,该实现将打印类名称和实例哈希(在您的情况下为com.mysql.jdbc.JDBC4ResultSet@81c868
)。
您要做的是从ResultSet中提取查询结果,然后打印出来。 使用rs1.getInt(1)
获取查询获取的计数。
请参阅此处的参考。
编辑(在问题编辑后):
首先,我将第一个查询更改为:
String query = "select count(kelompok),kelompok from email group by kelompok";
因为您kelompok
分组,所以这是您要计数的列。
其次,对结果集进行迭代:
while (rs.next()) {
dataset.setValue( Integer.parseInt(rs.getString(1)), "Jumlah", rs.getString(2));
}
我不知道什么是dataset
,但是该计数返回一个Integer,因此尝试读取String并将其转换为Integer没有任何意义。 我建议您使用Map:
Map<String,Integer> map = new LinkedHashMap<String,Integer>();
while (rs.next()) {
map.put (rs.getString(2), rs.getInt(1));
}
请注意,我将地图的键选择为kelompok
(无论是什么意思),将值选择为计数。
第二个查询似乎是多余的,因为您可以获得从第一个查询的结果中检索到的数据(总数)。
我们可以将第一个查询结果集的迭代更改为:
Map<String,Integer> map = new LinkedHashMap<String,Integer>();
int total = 0;
while (rs.next()) {
int count = rs.getInt(1);
total += count;
map.put (rs.getString(2), count);
}
现在,您已经拥有将数据输出到文件中的所有功能:
PrintStream out = new PrintStream(new FileOutputStream("OutFile.txt"));
out.println("E-mail yang diterima adalah sebanyak: "+ total);
out.println("Dengan detail: ");
for (String s : map.keySet()) {
out.println(s + " = " + map.get(s)); // you might want to change the formatting
}
out.close();
rs.toString()是什么?目前尚不清楚。
try {
PrintStream out = new PrintStream(new FileOutputStream("OutFile.txt"));
String jumlahemail = "select count(*) from email";
ResultSet rs1 = st.executeQuery(jumlahemail);
out.println("E-mail yang diterima adalah sebanyak: "+rs1.getInt(1));
out.println("Dengan detail: ");
out.println(rs.toString());
out.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
试试这个代码。
首先,java中的所有东西都无法正常工作
ResultSet rs1 = st.executeQuery(jumlahemail);
out.println("E-mail yang diterima adalah sebanyak: "+rs1.toString());
out.println("Dengan detail: ");
out.println(rs.toString());
您要使用rs1.toString()
尝试实现的目标如果在任何对象上调用toString(),它只会为您提供full-qualified-name-of-the-class@HashCode
。
如果ResultSet
获取数据,则需要先使用next()
遍历ResultSet
如下所示
ResultSet rs1 = st.executeQuery(jumlahemail);
while(rs1.next())
{
out.println("E-mail yang diterima adalah sebanyak: " + rset.getInt(1));
out.println("Dengan detail: ");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.