【发布时间】:2020-08-27 17:42:03
【问题描述】:
我需要将数据从 SQLite DB 的一个表(在本例中为 unsc1.unsc)复制到另一个 DB 的另一个新表 (CompleteNewDB.new_table),通过 JDBC。我不断收到错误消息:“SQL 错误或缺少数据库(没有这样的表:unsc)。
表存在; sqlite 查询的工作原理是我使用另一个软件单独尝试过的。程序和我尝试实施它的方式是否有错误?有没有更简单的方法用 JDBC 将数据从 table1 复制到 table2,每个分别位于不同的数据库中?
import java.sql.*;
public class Application {
public static void main(String[] args) {
Connection un1 = null;
Connection un2 = null;
Connection newDB = null;
Statement stmt1 = null;
Statement stmt2 = null;
String queryCreate = "CREATE TABLE newtable ("
+ "m_code_txt TEXT, "
+ "m_date_txt TEXT, "
+ "m_filename TEXT, "
+ "m_resumption_int INT, "
+ "m_status_txt TEXT, "
+ "m_suspension_int INT, "
+ "m_agenda_txt TEXT, "
+ "p_name_txt TEXT, "
+ "p_nation_txt TEXT, "
+ "p_role_txt TEXT, "
+ "s_speech_lang TEXT, "
+ "s_speech_txt TEXT, "
+ "s_speech_pos REAL );";
String queryData = "INSERT INTO new_table "
+ "SELECT * "
+ "FROM unsc1.unsc;";
try {
Class.forName("org.sqlite.JDBC");
//DB unsc1
un1 = DriverManager.getConnection("jdbc:sqlite:unsc1.db");
System.out.println("Connection to unsc1.db established");
//DB unsc2
un2 = DriverManager.getConnection("jdbc:sqlite:unsc2.db");
System.out.println("Connection to unsc2.db established");
//Migrated DB
newDB = DriverManager.getConnection("jdbc:sqlite:CompleteNewDB.db");
System.out.println("Creation & Connection to CompleteNewDB.db established");
//First query: create a table in new database
stmt1 = newDB.createStatement();
stmt1.execute(queryCreate);
System.out.println("Created table in CompleteNewDB ");
stmt1.close();
//PROBLEM HERE: copy data from table in database "unsc1.db" to the new_table ??
stmt2 = newDB.createStatement();
stmt2.execute(queryData);
System.out.println("Copied data from first DB to new DB.");
stmt2.close();
//closing all
un1.close();
un2.close();
newDB.close();
}
catch(Exception e) {e.printStackTrace(); }
}
}
【问题讨论】: