时间:2021-07-01 10:21:17 帮助过:25人阅读
JDBC编码的步骤: 1、加载驱动并注册驱动 Class.forName("com.mysql.jdbc.Driver"); 说明:在加载Driver类时,它会自动创建自己的实例并向 DriverManager 注册该实例。 com.mysql.jdbc.Driver的源码: public class Driver extends NonRegisteringDriver implements java.sql.Driver { // Register ourselves with the DriverManager static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } } // Construct a new driver and register it with DriverManager public Driver() throws SQLException { // Required for Class.forName().newInstance() } } 2、获取与数据库的连接:Connection Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/oa", "root", "root"); 3、得到代表SQL语句的对象:Statement Statement stmt = conn.createStatement(); 4、发送SQL给数据库,如果有查询结果,则得到封装了查询结果的对象:ResultSet ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from users"); 5、遍历结果 while(rs.next()){ System.out.println(rs.getObject("id")); System.out.println(rs.getObject("name")); } 6、释放占用的资源 rs.close(); stmt.close(); conn.close(); JDBC中常用的接口和类 1、DriverManager 作用:注册驱动,得到数据库的连接 1.1注册驱动: DriverManager.registDriver(new com.mysql.jdbc.Driver());(不可取) 原因: 1、严重依赖具体的数据库驱动。 2、导致驱动注册两遍,也就是在内存中会有两个Driver对象 注:new com.mysql.jdbc.Driver():在new了一个driver的同时使用DriverManager把自己给注册了(查看com.mysql.jdbc.Driver的源码可知)。 替代方案: Class.forName("com.mysql.jdbc.Driver"); 1.2获取数据库的连接: static Connection getConnection() 2、Connection 所有与数据库交互都必须建立在连接的基础上 3、Statement 作用:代表着SQL语句 常用的方法: ResultSet executeQuery(String sql) int executeUpdate(String sql) boolean execute(String sql) PreparedStatement:处理 DML 语句的利器,有以下3点好处 1、预编译SQL语句,数据库执行效率高。 注:Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出 2、防止SQL注入 3、支持参数占位符"?",简化sql语句的编写 PreparedStatement pstmt = conn.prepareStatement("insert into user (username, birthday) values(?,?)"); pstmt.setString(1, user.getUsername()); pstmt.setDate(2, new java.sql.Date(user.getBirthday().getTime())); pstmt.executeUpdate(); 4、ResultSet boolean next():下移一行 boolean previous():上移一行 void absolute(int row):第一行的记录就是1 注:absolute(1) 等效于 first()、absolute(-1) 等效于last() void beforeFirst():移动到第一行的前面 void afterLast():移动到最后一行的后面 5、释放资源 rs.close(); stmt.close(); conn.close();
版权声明:本文为博主原创文章,未经博主允许不得转载。
JDBC
标签:jdbc drivermanager connection statement resultset