原生JDBC实现六步骤

1.注册驱动

	告之JVM我们使用的那种数据库驱动程序(mysql驱动,oracle驱动...)

实现解析:

 使用java提供的类DriverManager中静态方法实现
 java.sql.DriverManager类:管理一组 JDBC 驱动程序的基本服务。
                static void registerDriver(Driver driver) 向 DriverManager 注册给定驱动程序。
            参数:
                java.sql.Driver接口:每个驱动程序类必须实现的接口。
                传递Driver接口的实现类对象,由mysql驱动提供:com.mysql.jdbc.Driver
             代码:
    			DriverManager.registerDriver(new Driver())
		     注意:
			    在com.mysql.jdbc.Driver类中,有一个静态代码块
			             static {
			                DriverManager.registerDriver(new Driver());
			            }
			     已经注册了一次驱动程序,我们又注册了一次驱动程序,浪费空间

        解决:使用反射技术
            Class.forName("foo.bah.Driver") 使用反射技术获取class文件对象,会执行类中的静态代码块完成注册驱动
        代码:
   		 **Class.forName("com.mysql.jdbc.Driver");**

2.获取数据库连接对象Connection

	数据库是一个TCP的服务器,我们的使用客户端(dos窗口,sqlyog,java程序)来连接服务器,
	在客户端和服务器之间建立一条连接通路

实现解析:

使用java提供的类DriverManager中静态方法实现
                static Connection getConnection(String url, String user, String password) 试图建立到给定数据库 URL 的连接。
                参数:
                    String url:数据库服务器的地址,固定的格式
                        jdbc:mysql://数据库的ip地址:端口号/数据库名称
                        jdbc:mysql://localhost:3306/day03
                        jdbc:mysql://127.0.0.1:3306/day03
                    String user:数据库的用户名 root
                    String password:数据库的密码 root
                返回值:
                    **java.sql.Connection接口**:返回的是Connection接口的实现类对象,由mysql驱动提供,,使用Connection接口来接收这个实现类对象(多态: 接口=实现类对象)
    

代码

    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day03", "root", "root");
    System.out.println(conn);//com.mysql.jdbc.JDBC4Connection@306a30c7

3.获取执行sql语句的执行者对象Statement

	 用来把sql语句发送到数据库中执行

实现解析:

	使用Connection接口中的方法
	Statement createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库。
	返回值:
	       java.sql.Statement接口: 返回的是Statement接口的实现类对象,由mysql驱动提供,返回的是Statement接口 ,使用Statement接口来接收这个实现类对象(多态: 接口=实现类对象)

代码

	Statement stat = conn.createStatement();
	System.out.println(stat);//com.mysql.jdbc.StatementImpl@b81eda8

4.执行sql语句,获取结果

	增删改:int 返回的是影响(affected)数据库的有效行数
    查询:ResultSet 返回的多个结果,把多个结果放在了一个结果集的集合中

实现解析:

	使用Statement接口中的方法
           int executeUpdate(String sql) 执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句
           ResultSet executeQuery(String sql) 执行给定的 SQL 语句,该语句可能为SELECT
                 参数:
                    String sql:增删改查的sql语句
                 返回值:
                    增删改:int 返回的是影响(affected)数据库的有效行数
                    查询:ResultSet 返回的多个结果,把多个结果放在了一个结果集的集合中

代码:

	executeUpdate(String sql) 
	int row = stat.executeUpdate("INSERT INTO category (cid,cname) VALUES(null,'汽水');");
 executeQuery(String sql) 
ResultSet rs = stat.executeQuery("SELECT * FROM category WHERE cid = 20");

5.处理结果

增删改:int   无需处理,打印
查询:ResultSet 遍历

代码:

	结果集
	 if (rs.next()){
	            int cid = rs.getInt("cid");
	            String cname = rs.getString("cname");
	            System.out.println(cid+"\t"+cname);
	  }else{
	            System.out.println("没有查询到结果!");
	        }

6.释放资源(IO流)

代码:

 		if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(stat!=null){
            try {
                stat.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

你可能感兴趣的:(java,WEB)