【问题标题】:Run SQL file with inset Commands in Java在 Java 中使用插入命令运行 SQL 文件
【发布时间】:2012-01-24 08:06:04
【问题描述】:

我想运行一个包含很多插入语句的 SQL 文件,我正在尝试运行该文件,到目前为止我找到了这段代码,但它并不好,因为它给了我一个找不到表的错误,你看看代码也许能找到问题?

      private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)                    {                                         
    try {                                         

        URL = jTextField1.getText();
        username = jTextField3.getText();
        password = jTextField2.getText();

        String s = new String();
        StringBuilder sb = new StringBuilder();
        Connection conn = (Connection) DriverManager.getConnection(URL, username, password);
        Class.forName("com.mysql.jdbc.Driver");

        try {
            Statement st = conn.createStatement();
            String query = "DELETE FROM player;";
            st.executeUpdate(query);
            JOptionPane.showMessageDialog(this, "Delete Compleated");
        }catch (Exception e) {
            JOptionPane.showMessageDialog(this, e.getMessage());
        }


////////////////////////////////////////////////////////////////////////////////        
        try {

            FileReader fr = new FileReader(new File("player.sql"));
            // be sure to not have line starting with "--" or "/*" or any other non aplhabetical character  

            BufferedReader br = new BufferedReader(fr);

            while ((s = br.readLine()) != null) {
                sb.append(s);
            }
            br.close();

            // here is our splitter ! We use ";" as a delimiter for each request  
            // then we are sure to have well formed statements  
            String[] inst = sb.toString().split(";");


            Statement st = conn.createStatement();

            for (int i = 0; i < inst.length; i++) {
                // we ensure that there is no spaces before or after the request string  
                // in order to not execute empty statements  
                if (!inst[i].trim().equals("")) {
                    st.executeUpdate(inst[i]);
                    System.out.println(">>" + inst[i]);
                }
            }

             JOptionPane.showMessageDialog(this,"Loaded Compleat");

        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, e.getMessage());
        }

        DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
        try {

            Statement st = conn.createStatement();
            String query = "Select * from player;";
            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {
                int d1 = rs.getInt(1);
                String d2 = rs.getString("PlayerName");
                String d3 = rs.getString("PlayerSurname");
                String d4 = rs.getString("PlayingPosition");
                double d5 = rs.getDouble("PlayerRating");

                model.addRow(new Object[]{
                            d1, d2, d3, d4, d5
                        });
            }

            rs.close();
            st.close();
            conn.close();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, e.getMessage());
        }

    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Football.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(Football.class.getName()).log(Level.SEVERE, null,ex);
    }

}     

感谢您提供的任何帮助 :) 我正在使用 Xampp,并且数据库已准备就绪,我所需要的只是填充它,

【问题讨论】:

    标签: java netbeans xampp


    【解决方案1】:

    也许您必须在此代码中添加新行 "\n"

    while ((s = br.readLine()) != null) {
                    sb.append(s);
                    sb.append("\n");
                }
    

    因为你在前一行之后附加了每一行

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 2012-04-01
      相关资源
      最近更新 更多