【问题标题】:Java Netbeans MySql database ConnectionJava Netbeans MySql 数据库连接
【发布时间】:2014-01-21 12:19:44
【问题描述】:

我想在 Java Netbeans 中使用正常的 Mysql 连接程序将行插入 MySql 数据库,但是当我运行此代码时,我的数据库不受影响。我已经设置了与 Netbeans 和 Mysql 的连接,它工作正常。

代码:

    import java.sql.*;

    public class MySqlConnection {


       static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
       static final String DB_URL = "jdbc:mysql://localhost:3306/migration";
       static final String USER = "root";
       static final String PASS = "ngts12345";

       public static void main(String[] args) {

            Connection conn = null;

            try{
             Class.forName("com.mysql.jdbc.Driver");
             System.out.println("Connecting to a selected database...");
             conn = DriverManager.getConnection(DB_URL, USER, PASS);
             System.out.println("Connected database successfully...");
             System.out.println("Inserting records into the table...");

             String sql = "INSERT INTO document (document_id, document_name, format)" +
            "VALUES (?, ?, ?)";
             PreparedStatement preparedStatement = conn.prepareStatement(sql);
             preparedStatement.setInt(1, 1);
             preparedStatement.setString(2, "Test2");
             preparedStatement.setString(3, "Test3");
             preparedStatement.executeUpdate(); 
             preparedStatement.close();  
             conn.close();  
        }catch(SQLException se){
          //Handle errors for JDBC

       }catch(Exception e){
          //Handle errors for Class.forName

       }
     }
  }

【问题讨论】:

  • 你检查过日志吗?

标签: java mysql netbeans


【解决方案1】:

format)values 后面没有空格

将此行改为

String sql = "INSERT INTO document (document_id, document_name, format)" +
        "VALUES (?, ?, ?)";

String sql = "INSERT INTO document(document_id, document_name, format) " +
        "VALUES (?, ?, ?)";

【讨论】:

    【解决方案2】:

    尝试这样做:

    preparedStatement.executeUpdate(sql); 
    

    你还应该指定数据库

    String sql = "INSERT INTO database_name.document (document_id, document_name, format)" +"VALUES (?, ?, ?)";
    

    【讨论】:

      【解决方案3】:
      try{      
        Class.forName("com.mysql.jdbc.Driver"); // MySQL database  connection
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306","root","");
        String sql = "select * from 'table_name'.database_name where user=? and pass=?";
        pst = conn.prepareStatement(sql);
        rs= pst.executeQuery();
      }
      

      【讨论】:

        【解决方案4】:

        注意preparedStatement.executeUpdate() 返回true(插入、更新或删除记录成功)或false(不成功)。因此,我建议将结果打印出来看看是否有效。

        至于没有收到错误消息,您是否正在消费异常并且没有打印出错误?在你的 catch 块中,放入 e.printStackTrace() 以查看错误是什么。

        【讨论】: