如何让我的程序从一个字一个字地读取数据库中的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 我想要的。我怎样才能做到这一点?
答案 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 + "");
}
}
//...