Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改集合<;字符串>;从数据库到字符串的值_Java_Jdbc - Fatal编程技术网

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()。