import java.sql.*; public class TestpreparedJDBC { public static void main(String[] args) { // 用命令行参数输入三个字符串,把字符串内容插入表的相应字段 // 本程序的要插入表有三个字段,第一个是数字类型,第二和第三个为字符类型 if (args.length != 3) { System.out.println("参数错误"); System.exit(-1); } int id = 0; try { // 处理第一个字符串不能转换为数字的异常 id = Integer.parseInt(args[0]); } catch (NumberFormatException e) { e.printStackTrace(); System.exit(-1); } String name = args[1]; String introduction = args[2]; Connection con = null; // 注意:此处改成PreparedStatement,不懂PreparedStatement的用法查JAVA_API PreparedStatement pstmt = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); // con = // DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?user=root&password=root"); con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/mydb", "root", "root"); // 以下SQL的格式是PreparedStatement接口定义的 String sql = "insert into people(?,?,?)"; pstmt = con.prepareStatement(sql); // 设置第1个问号的值 pstmt.setInt(1, id); // 设置第2个问号的值 pstmt.setString(2, name); // 设置第3个问号的值 pstmt.setString(3, introduction); System.out.println(sql); pstmt.execute(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException s) { s.printStackTrace(); } finally { // 关闭数据库,一般是后开的先关,对应上面 try { if (rs != null) { // 如果rs一开始就是null的话,如果不判断就一直出SQL异常,所以应该先判断一下 rs.close(); rs = null; } if (pstmt != null) { // 如果pstmt一开始就是null的话,如果不判断就一直出SQL异常,所以应该先判断一下 pstmt.close(); pstmt = null; } if (con != null) { // 如果con一开始就是null的话,如果不判断就一直出SQL异常,所以应该先判断一下 con.close(); con = null; } } catch (SQLException se) { se.printStackTrace(); } } } }
JAVA执行SQL语句的两种用法(第二种方法--preparedStatement接口实现)
最新推荐文章于 2021-02-24 10:10:55 发布