【问题标题】:Inserting from one Mysql database to Another从一个 Mysql 数据库插入到另一个
【发布时间】:2014-03-19 17:18:40
【问题描述】:

我正在尝试将数据从一个 mysql 数据库传输到另一个。对于一个我将连接 url 作为数据库名称、用户名和密码(因为这必须存在于远程位置)。对于另一个我正在使用一个数据源。

public class errorlog {
     public static void main(String[] args)
        {
            try {
              Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Driver loaded mysql1server");
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        System.out.println("Driver loaded mysql");

            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                System.out.println("not loaded");
            }
            String connectionUrl = "jdbc:mysql//localhost:3306/db1" ;

              String connectionUrl2="jdbc:odbc:test";
                Connection con=null;
                Connection con2=null;
                Statement stmt = null;
                ResultSet rs = null;
                PreparedStatement pstmt = null;


                try {
                    con = DriverManager.getConnection(connectionUrl,"root","root");
                    System.out.println("CONNECTED1 mysql1");
                 con2 = DriverManager.getConnection(connectionUrl2);
              System.out.println("CONNECTED2 mysql");
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


                try {
                 stmt = con.createStatement();
                 rs=stmt.executeQuery("select * FROM db1.db1_table");
                  System.out.print("Select executed");
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


               try {
                    while (rs.next()) {

                        int col1 = rs.getInt("col1");
                        String col2=rs.getString("col2");


Date TimeStamp = rs.getDate("Time Stamp");



                    String insertSql ="Insert into db2.db2_table (`col1`,`col2`) values(?,?)";
                            pstmt = con2.prepareStatement(insertSql);

                             pstmt.setInt(1,col1);
                            pstmt.setString(2,col2);


pstmt.setDate(3,(java.sql.Date) TimeStamp);

                            pstmt.executeUpdate();




                       pstmt.close();
                       System.out.println("insert done");
                    }

                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

                System.out.println("out insert done");


    }
    }

我收到错误消息“找不到适合 jdbc:mysql//localhost:3306/databaseName=db1;user=root;password=root 的驱动程序”

请告诉我我哪里错了。

进一步要求 -

我想使用一个配置文件,它将保存一个时间值,并在获取数据时不断更新。Ex-文件保存值 2014-03-18 12:00:00,程序将定期运行间隔 1 小时。我只想在文件保存时间之后获取数据。一旦运行,文件应该更新。

请让我知道我该怎么做。

【问题讨论】:

    标签: java mysql jdbc


    【解决方案1】:

    您没有加载 MySQL 驱动程序。你得到了 ODBC 驱动程序

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    

    但是你需要一些 mysql jdbc 协议的东西,例如

    Class.forName("com.mysql.jdbc.Driver");
    

    然后需要在项目中引用/包含 mysql 连接器 jar。

    【讨论】:

    • 根据您的建议进行了更改,并且已经添加了 jar。仍然存在相同的错误。已编辑上面的代码
    • 我认为它对连接 URL 中存在您的用户名和密码感到不满。尝试将它们拉出并使用 DriverManager.getConnection(connectionURL, "root","root")。
    • 仍然是同样的错误..请参阅编辑后的代码..正在打印 2 个驱动程序加载语句
    【解决方案2】:

    我收到错误消息“找不到适合 jdbc:mysql//localhost:3306/databaseName=db1;user=root;password=root 的驱动程序”

    `mysql'后面需要一个冒号

    【讨论】:

    • 我用了一个冒号..现在它的错误是“指定的 DSN 包含驱动程序和应用程序之间的架构不匹配”。
    • 你尝试结合我们的答案?
    • 这是您的 ODBC 驱动程序的问题。您需要安装正确的 32 位或 64 位驱动程序以匹配您的应用程序
    • 如果两个连接都到 MySQL 服务器,则两个连接都可以使用 JDBC,不需要 ODBC .....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2014-11-21
    • 2016-09-14
    • 2015-02-04
    • 2013-04-25
    • 1970-01-01
    相关资源
    最近更新 更多