将Set <string>值从数据库更改为字符串值</string>

时间:2013-06-15 22:33:47

标签: java jdbc

如何让我的程序从一个字一个字地读取数据库中的Set值。

import java.util.*;
import java.sql.*;
public class SetProblem {

public static void main(String[] args) {

    Connection con = null;
    Statement st = null;
    ResultSet rs  = null;

    Set<String> nums = new HashSet<>();
    nums.add("1");
    nums.add("2");
    try
    {
        Class.forName("org.sqlite.JDBC");
        con = DriverManager.getConnection("jdbc:sqlite:src/database/set.db");
        st = con.createStatement();
        //st.execute("create table data(word, synonyms);");
        //st.executeUpdate("insert into data values('figure', '"+nums+"');");
        rs = st.executeQuery("select * from data;");
        Set<String> set = new TreeSet<>();
        while(rs.next())
        {
            set.add(rs.getString(2));
        }
        for(String s:set)
        {
            System.out.print(s + "");
        }
    }
    catch(ClassNotFoundException e)
    {
        System.out.println("Driver not found");
    }
    catch(SQLException s)
    {
        System.out.println("wrong sql command");
    }
}

}

我的问题是它打印[1,2]而不是 1 2 我想要的。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您正在插入一行,但您想要的(我认为)是插入两行。你看[1,2],因为它正是你在第二列中插入的内容(你强制使用nums.toString())。

这里是我认为您正在寻找的代码:

    //...
    Set<String> nums = new HashSet<>();
    nums.add("1");
    nums.add("2");
    try
    {
        Class.forName("org.sqlite.JDBC");
        con = DriverManager.getConnection("jdbc:sqlite:src/database/set.db");
        st = con.createStatement();
        //st.execute("create table data(word, synonyms);");
        //for(String i: nums)  //HERE YOU NEED TO CYCLE
        //   st.executeUpdate("insert into data values('figure', '"+i+"');");
        rs = st.executeQuery("select * from data;");
        Set<String> set = new TreeSet<>();
        while(rs.next())
        {
            set.add(rs.getString(2));
        }
        for(String s:set)
        {
            System.out.print(s + "");
        }
    }
    //...