现在我有MSSQL2000中有两个数据库A和B,A中有AA表需要导入导B中的BB表,AA表和BB表库结构不完全同,但有几个字段相同,将相同的字段下的数据使用JDBC程序将AA中的数据导入到BB中,如何实现?小弟只会简单JDBC的对一个库的数据读和写,对两个库的操作就没有办法了。请高手帮帮嘛!有程序说明更好。
                                                                谢谢了。

解决方案 »

  1.   

    我写了一些,但是执行最后一句的时候抱错  
       int idb =set.getInt("id");
        String BookID = set.getString("BookID");
        String PDate = set.getString("PDate"); 
        System.out.println(idb+","+BookID+","+PDate);
        state.execute("insert scpop.dbo.logs(id,s_id,score) values(idb,BookID,PDate)");
    程序编译没有问题,运行的时候提示错误为:
    在此文中不允许使用‘idb'此处值允许使用常量,表达式或变量。不不允许使用列名。
    为什么啊?idb是变量啊!!!请高手帮忙!!
      

  2.   

    建两个连接。一个连接到A
    一个连接到B先从A连接中取得需要数据。然后用B连接插入相关的数据到B中。
      

  3.   

    我写了一段程序,只建立了一个库,不编译可以通过,但不能运行。
    import java.sql.*;public class jdbc1{  public static void main(String[] args)  {    Connection connection = null;    //建立与数据库的连接    try    {      //加载数据库驱动      Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");      String sourceURL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookDB";      //建立与数据库的连接      connection = DriverManager.getConnection(sourceURL, "sa", "");    }    catch (ClassNotFoundException e)    {      System.err.println(e.getMessage());    }    catch (SQLException e)    {      System.err.println("Generate Connection, Error! " + e.getMessage());    }    try    {      Statement state = connection.createStatement();      String sql = "SELECT * FROM Book";      ResultSet set = state.executeQuery(sql);     while(set.next()){
          // System.out.println(set.getString("id")+","+set.getString("BookID")+","+set.getString("PDate")+","+set.getString("Pages")+","+set.getString("Price")+","+set.getString("Title")+","+set.getString("Author")+","+set.getString("BookMemo"));
        int idb =set.getInt("id");
        String BookID = set.getString("BookID");
        String PDate = set.getString("PDate");
        System.out.println(idb+","+BookID+","+PDate);
        state.execute("insert exam.dbo.score(id,s_id,score) values(idb,BookID,PDate)");
        }
       // 
        //  String Pages =set.getString("Pages");
        // String sql2 = "INSERT INTO Book VALUES (1)";
          //  String sql3 = "select * from scpop.dbo.logs";
          //state.executeUpdate(sql2);
       // state.execute("insert into scpop.dbo.logs(oid,message) values('5',set.getString("BookID"))");
        }    catch (SQLException e)    {      System.err.println(e.getMessage());    }  }}
      

  4.   

    如果你是一个MSSQL实例下面的两个数据库的话,用SQL就可以实现了,在SQL里,你可以通过[数据库名].[表的所有者].[表名]来引用其它库的表,然后你的JAVA里只要执行一句SQL就可以了不用把结果集传回来的。如果不是统一MSSQL实例下面的两个数据库的话,你需要建立链接数据库,如果不能建立的话,只能用JAVA建立两个不同的连接,这个是必须的,你不能用一个连接同时做两个操作。