zoukankan      html  css  js  c++  java
  • JDBC

    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();


  • 相关阅读:
    WinForm DevExpress使用之ChartControl控件绘制图表二——进阶
    正则表达式(JavaScript)
    WinForm DevExpress使用之ChartControl控件绘制图表一——基础
    Git常用命令总结
    CSS样式设置小技巧
    java Socket编程
    java synchronized详解
    SpringBoot应用整合ELK实现日志收集
    mongoDB中的的常用语法
    使用Nginx做图片服务器时候,配置之后图片访问一直是 404问题解决
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7096478.html
Copyright © 2011-2022 走看看