繁体   English   中英

结果集打印到txt文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM