/* statement与preparedStatement比较每次执行sql语句,数据库都要执行sql语句的编译,最好用在仅执行一次查询并返回结果的情形,存在sql注入风险。在执行可变参数的一条sql时,preparedstatement 比statement效率高,因为DBMS预编译一条sql当然会比多编译一条sql的效率高,安全性更好,有效防止sql注入问题,由于采用擦车机制,预先编译的语句,就会放在cache中,下次执行相同的sql语句时,可以直接从cache中取出来,大大提高了执行的效率。*///法一statement使用public static void main(String[] args) { //先导入驱动的jar包(可以网上下载mysql jdbc 驱动),右键属性-->java build path-->add external jars String url="jdbc:mysql://localhost:3306/student"; //连接数据库的url地址 String username="root"; //数据库的用户名 String password="123"; //数据库的密码 Connection con=null; try { //1.加载mysql数据库驱动 Class.forName("com.mysql.jdbc.Driver"); //2.建立数据库连接,connection是java.sql包下的 con=DriverManager.getConnection(url, username,password); if(con!=null) { System.out.println("数据库连接成功"); }else { System.out.println("数据库连接不成功"); } //3创建sql语句对象 Statement statement=con.createStatement(); //String sql="insert into login values(‘xiaoge‘,‘female‘,‘shandong‘)"; //String sql="delete from login where name=‘jack‘"; String sql="update login set name=‘lucy‘ where city=‘nanjing‘"; //4执行语句 int r=statement.executeUpdate(sql); if (r>0) { //System.out.println("insert success.."); //System.out.println("update success.."); System.out.println("delete success..."); } else { //System.out.println(" fail.."); } } catch (Exception e) { e.printStackTrace(); //如果出错,在命令行打印异常信息在程序中出错的位置及原因。 } finally { //5.释放资源 if (con!=null) { try { con.close(); con=null; } catch (SQLException e) { e.printStackTrace(); } } } }
//法二preparedstatementpublic static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root","123"); String sqlString="insert into login values(?,?,?)"; PreparedStatement preparedStatement=connection.prepareStatement(sqlString); int rSet=preparedStatement.executeUpdate(); //小标为1开始 // preparedStatement.setString(1, "lifang"); // preparedStatement.setString(2, "female"); // preparedStatement.setString(3, "guangdong"); preparedStatement.setString(1, "tom"); preparedStatement.setString(2, "man"); preparedStatement.setString(3,"beijing"); int result=preparedStatement.executeUpdate(); if (result>0) { System.out.println("insert success.."); } else { System.out.println("insert fail.."); } } catch (Exception e) { e.printStackTrace(); } }
时间: 2024-10-21 09:58:09