gpt4 book ai didi

java - 每次写入Sqlite数据库时重新定义Statement

转载 作者:行者123 更新时间:2023-11-29 05:35:10 24 4
gpt4 key购买 nike

我编写了一个 java 代码,从 Sqlite 数据库中一个名为 edges 的表中获取值,并将其写入另一个名为 distances 的表。但是在将值写入表距离时,我每次都必须重新定义语句。如果我不重新定义 Statement 的值,循环将在执行下面给出的代码的一次迭代后退出:

statement.executeUpdate(sql);

但如果我重新定义语句,循环将按预期继续,即我已注释掉的代码行。谢谢。

public static Connection dbconn;
public static Statement statement;
public void solve(InputReader in,OutputWriter out) throws ClassNotFoundException
{
try
{
Class.forName("org.sqlite.JDBC");
dbconn =DriverManager.getConnection("jdbc:sqlite:/home/src/db.db");
System.out.println("Connected");
statement = dbconn.createStatement();
statement.setQueryTimeout(30);
ResultSet rs = statement.executeQuery("select * from edges;");
while(rs.next())
{
String sql = "INSERT INTO distances (Road_Name,Start_Latitude,Start_Longitude)" +
"VALUES ('"+rs.getString("Road_Name")+"',"+rs.getString("Start_Latitude")+","+rs.getString("Start_Longitude")";

//Statement statement= dbconn.createStatement();
statement.executeUpdate(sql);
}
}
catch(Exception e)
{
System.out.println("Exception : "+e);
}
}

最佳答案

最好使用单个 SQL 操作进行此类操作:

INSERT INTO distances (Road_Name, Start_Latitude, Start_Longitude)
SELECT Road_Name, Start_Latitude, Start_Longitude
FROM edges

或者使用两个语句,一个用于Select,第二个用于Insert

关于java - 每次写入Sqlite数据库时重新定义Statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19769031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com