JDBC流程,execute、executeQuery和executeUpdate的区别,statement和prepareStatement的区别。
今天复习了之前的JDBC,发现差不多全忘了,今天在此总结一下吧。
①JDBC的大致流程如下:
先导包
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency>
再写连接数据库的代码:
package test; import java.sql.*; public class TestJDBC { public static void main(String[] args) throws ClassNotFoundException, SQLException { //第二个jdbc是需要连接数据库的名字 String url="jdbc:mysql://localhost:3306/jdbc?characterEncoding=UTF-8"; String usename="root"; String password="admin"; //1.加载驱动并抛出异常 Class.forName("com.mysql.jdbc.Driver"); //2.连接数据库 Connection connection = DriverManager.getConnection(url, usename, password); //3.向数据库发送SQL的对象Statement并抛出异常 Statement statement = connection.createStatement(); //4.编写SQL String sql="select * from account"; //5.执行查询SQL,返回一个ResultSet结果集 ResultSet rs=statement.executeQuery(sql); while(rs.next()){ System.out.println("id+"+rs.getInt("id")); System.out.println("name+"+rs.getString("name")); System.out.println("money+"+rs.getInt("money")); } //6.关闭连接,释放资源(一定要做,因为数据库连接池)先开后关 rs.close(); statement.close(); connection.close(); } }
②在第五步执行mysql语句时,有两种写法,比如查询id是1的,方法如下:
1.statement语法
Statement statement = connection.createStatement(); String sql="select * from account where id=1"; ResultSet rs=statement.executeQuery(sql);
2.prerarestatement语法
PreparedStatement preparedStatement = connection.prepareStatement("select * from account where id=?"); preparedStatement.setInt(1,1); preparedStatement.executeUpdate()
如果只执行一次SQL语句的话用第一个比较好,如果SQL语句被多次执行就用第二个。
并且第一个注解会有漏洞。详情如下:
statement和prepareStatement的区别_HaC 的博客-CSDN博客_statement和preparestatement的区别
③execute、executeQuery和executeUpdate的区别
1.executeQuery用于查,可以返回ResultSet集。
2.excuteUpdate用于增删改,返回影响的行数
3.execute用于判断该SQL语句是否返回了ResultSet。一般不用只用前两个。