0

我正在尝试通过 Eclipse 将数据输入到 MySQL 数据库中。这是我到目前为止所拥有的:

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import com.mysql.jdbc.Statement;

public class MySQL{

public static void main(String[] args)throws Exception{

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

    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database","root","root");

    PreparedStatement stmt = con.prepareStatement("INSERT INTO 'database'.'Table'(Account_ID,First_Name,Last_Name) VALUES ('hello12','Ed','Lee')");

    ResultSet result = stmt.executeQuery();}

 }

由于某种原因它不起作用......有什么想法吗?

4

4 回答 4

0

你试过提交吗?

con.commit();

于 2012-08-10T03:27:21.033 回答
0

像这样更改您的代码;

    public class MySQL{
          public static void main(String[] args)throws Exception{
              Class.forName("com.mysql.jdbc.Driver");
              try{
                  Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database","root","root");
                   PreparedStatement stmt = con.prepareStatement("INSERT INTO 'database'.'Table'(Account_ID,First_Name,Last_Name) VALUES (?,?,?)");
                   stmt.setString(1, "hello12");
                   stmt.setString(2, "Ed");
                   stmt.setString(3, "Lee");
                   stmt.executeUpdate();
              } catch (Exception e) {
                   e.printStackTrace();
              } finally {
                   stmt.close();
                   con.close();
              }
          }

     }
于 2012-08-10T04:36:51.587 回答
0

正如其他人所建议的,您需要提交您在 sql 语句中所做的更改。以下是它的外观:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class MySQL{

    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "root", "root");
            stmt = con.prepareStatement("INSERT INTO 'database'.'Table'(Account_ID,First_Name,Last_Name) VALUES (?,?,?)");
            stmt.setString(1, "hello12");
            stmt.setString(2, "Ed");
            stmt.setString(3, "Lee");
            stmt.executeUpdate();
            conn.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (stmt != null) {
                try {
                   stmt.close();
                } catch (SQLException ex) {
                }
            }
            if (con != null) {
                try {
                   con.close();                    
                } catch (SQLException ex) {
                }
            }
        }
    }
}

导入要注意的已更改的内容。

  • 您在 try 块之前声明变量,以便在 finally 块中可以访问它们,但在 try 块中初始化它们以防它们引发异常。
  • 用语法代替PreparedStatement新值?而不是硬编码。在实际应用程序中,这些最终会被传入,如果您只是进行字符串连接,您将面临 SQL 注入或其他问题。
  • finally 块用于释放任何资源,无论是否引发异常。假设您创建了连接和准备好的语句,但执行它时会引发错误。finally 块中的代码仍将运行以关闭语句和连接,从而释放这些资源。
于 2012-08-10T19:44:57.970 回答
0

更改以下行

PreparedStatement stmt = con.prepareStatement("INSERT INTO 'database'.'Table'(Account_ID,First_Name,Last_Name) VALUES ('hello12','Ed','Lee')");

PreparedStatement stmt = con.prepareStatement("INSERT INTO `database`.`Table`(Account_ID,First_Name,Last_Name) VALUES ('hello12','Ed','Lee')");

用于数据库名称和表名称的单引号将引发语法错误。而是使用 ` 这个符号。

于 2017-07-04T08:23:05.430 回答