学习笔记:JDBC编程六部曲(以mysql为例)

JDBC编程六部曲

一.步骤
1.注册驱动
2.获取数据库连接
3.获取数据库操作对象
4.执行sql语句(以DQL为例,DML没有第五步)
5.处理查询结果集
6.关闭资源

二.具体

1.注册驱动

import java.sql.Driver;
import java.sql.DriverManager;
public class JDBCTest1 {
	public static void main(String[] args) {
		try {
				//1.注册驱动
				//1.1获取驱动对象
				Driver driver = new com.mysql.jdbc.Driver();
				//1.2注册驱动
				DriverManager.registerDriver(driver);
			}catch(Exception e) {
			e.printStackTrace();
		}
		
		
		
	}

}

2.获取数据库连接

import java.sql.Driver;

import java.sql.DriverManager;

import java.sql.Connection;

public class JDBCTest02 {
	public static void main(String[] args) {
		try {
			//1.注册驱动
			//1.1获取驱动对象
			Driver driver =new com.mysql.jdbc.Driver();
			//1.2注册驱动
			DriverManager.registerDriver(driver);
			
			//2.获取数据库的连接
			String url="jdbc:mysql://127.0.0.1:3306/bjpowernode"; //一种写法
																  //一定要写对 ,否则就报“找不到适合的驱动”的错误
																  //3306是端口号,不一定全为3306(这个是安装MySQL时候你选的)
			String user="root";
			String password="123456";
			Connection conn=DriverManager.getConnection(url,user,password);
			System.out.println(conn);
		}catch(Exception e) {
			e.printStackTrace();
		}
	}

}

 注:bjpowernode是动力节点写的一个数据库的名字

运行结果类似于这个:com.mysql.jdbc.JDBC4Connection@300ffa5d 

 这步要注意

1.url写对

2.getConnection这个方法(以下摘自jdk 1.6)

getConnection

public static Connection getConnection(String url,
                                       String user,
                                       String password)
                                throws SQLException

试图建立到给定数据库 URL 的连接。DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。

 

参数:

url - jdbc:subprotocol:subname 形式的数据库 url

user - 数据库用户,连接是为该用户建立的

password - 用户的密码

返回:

到 URL 的连接

抛出:

SQLException - 如果发生数据库访问错误

3.获取数据库操作对象

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;

import java.sql.Statement;
public class JDBCTest03 {
	public static void main(String[] args) {
		try {
			//1.注册驱动
			//1.1获取驱动对象
			Driver driver=new com.mysql.jdbc.Driver();
			DriverManager.registerDriver(driver);
			
			//2.获取数据库连接
			String url="jdbc:mysql://localhost:3306/bjpowernode";  //又一种写法
			String user="root";
			String password="123456";
			Connection conn=DriverManager.getConnection(url,user,password);
			
			//3.数据库操作对象
			Statement stmt=conn.createStatement();
			System.out.println(stmt);
			
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

 运行结果类似:com.mysql.jdbc.StatementImpl@300ffa5d

4.执行sql语句(以DQL为例,DML没有第五步)
5.处理查询结果集
6.关闭资源

ps:这几步一起写出来(最终版)

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCTest04 {
	public static void main(String[] args) {
		Connection conn=null;
		Statement stmt=null;
		ResultSet rs=null;
		try {
			//1.注册驱动
			Driver driver=new com.mysql.jdbc.Driver();
			DriverManager.registerDriver(driver);
			
			//2.获取数据库链接
			String url="jdbc:mysql://localhost:3306/bjpowernode";
			String user="root";
			String password="123456";
			
			conn=DriverManager.getConnection(url,user,password);
			
			//3.获取数据库操作对象
			 stmt=conn.createStatement();
			
			//4.执行sql语句  :DQL-->查询出员工薪水等级:显示员工名称,员工薪水,薪水等级
			String sql="select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal";
			 rs=stmt.executeQuery(sql);
			System.out.println(rs);
			/*
			+--------+---------+-------+
			| ename  | sal     | grade |
			+--------+---------+-------+
			| SMITH  |  800.00 |     1 |
			| ALLEN  | 1600.00 |     3 |
			| WARD   | 1250.00 |     2 |
			| JONES  | 2975.00 |     4 |
			| MARTIN | 1250.00 |     2 |
			| BLAKE  | 2850.00 |     4 |
			| CLARK  | 2450.00 |     4 |
			| SCOTT  | 3000.00 |     4 |
			| KING   | 5000.00 |     5 |
			| TURNER | 1500.00 |     3 |
			| ADAMS  | 1100.00 |     1 |
			| JAMES  |  950.00 |     1 |
			| FORD   | 3000.00 |     4 |
			| MILLER | 1300.00 |     2 |
			+--------+---------+-------+
			*/
			//5.处理查询结果集
			while(rs.next()) {
				String ename=rs.getString("ename");
				double sal=rs.getDouble("sal");
				int grade=rs.getInt("grade");
				System.out.println(ename+"  "+sal+"  "+grade);
			}
		}catch(Exception e) {
			e.printStackTrace();
		}finally{
			//6.关闭资源
			if(rs!=null) {
				try{
					rs.close();
				}catch(Exception e) {
					e.printStackTrace();
					
				}
			}
			if(stmt!=null) {
				try{
					stmt.close();
				}catch(Exception e) {
					e.printStackTrace();
					
				}
			}
			if(conn!=null) {
				try{
					conn.close();
				}catch(Exception e) {
					e.printStackTrace();
					
				}
			}
			
		};
		
		
		
	}

}

第四步就是写一个sql语句再用executeQuery(sql)方法运行一下

第五步处理查询结果集用到一个next();

next

boolean next()
             throws SQLException

将光标从当前位置向前移一行。ResultSet 光标最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。

第六步在finally里关闭资源

1.这里就有一个初始化的问题,

如果按第一到三步在try里初始化,

那么finally里面没有conn stmt rs就不能用close方法

所以要在try外面初始化,如上图最终版

2.逆序关闭(rs-->stmt-->conn)

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值