Java 更改集合<;字符串>;从数据库到字符串的值
如何让我的程序逐字从数据库中读取设定值Java 更改集合<;字符串>;从数据库到字符串的值,java,jdbc,Java,Jdbc,如何让我的程序逐字从数据库中读取设定值 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<
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");
}
}
import java.util.*;
导入java.sql.*;
公共类集合问题{
公共静态void main(字符串[]args){
连接con=null;
语句st=null;
结果集rs=null;
Set nums=new HashSet();
增加(“1”);
增加(“2”);
尝试
{
Class.forName(“org.sqlite.JDBC”);
con=DriverManager.getConnection(“jdbc:sqlite:src/database/set.db”);
st=con.createStatement();
//st.execute(“创建表数据(单词、同义词);”;
//st.executeUpdate(“插入数据值('figure','“+nums+”);”;
rs=st.executeQuery(“从数据中选择*”;
Set=新树集();
while(rs.next())
{
set.add(rs.getString(2));
}
for(字符串s:set)
{
系统输出打印(s+“”);
}
}
catch(classnotfounde异常)
{
System.out.println(“未找到驱动程序”);
}
捕获(SQLS异常)
{
System.out.println(“错误的sql命令”);
}
}
}
我的问题是它打印[1,2],而不是
1.
2.
这是我想要的。我怎样才能做到这一点呢?您正在插入一行,但(我认为)您想要的是插入两行。您之所以看到[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 + "");
}
}
//...
/。。。
Set nums=new HashSet();
增加(“1”);
增加(“2”);
尝试
{
Class.forName(“org.sqlite.JDBC”);
con=DriverManager.getConnection(“jdbc:sqlite:src/database/set.db”);
st=con.createStatement();
//st.execute(“创建表数据(单词、同义词);”;
//for(String i:nums)//这里需要循环
//st.executeUpdate(“插入数据值('figure','“+i+”);”);
rs=st.executeQuery(“从数据中选择*”;
Set=新树集();
while(rs.next())
{
set.add(rs.getString(2));
}
for(字符串s:set)
{
系统输出打印(s+“”);
}
}
//...
你说的“它返回[1,2]”是什么意思?而且,你的代码似乎在做一些事情,这些事情都是结合在一起的。既然您已经有了一个集合
,为什么要声明树集合树
来复制它呢?为什么每次迭代while
循环都需要一份副本呢?我的意思是“打印”而不是“返回”。很抱歉,我建议您将每个任务分成不同的方法。一种方法可以打开数据库连接并返回连接
对象。另一种方法可以执行查询并返回结果集
或集
,具体取决于您喜欢哪个。另一种方法可以在ResultSet
或集合中打印结果。然后,main()。