JDBC如何与数据库进行连接

JDBC(Java Database Connectivity):Java数据库连接,它是与数据库进行连接的纽带(与数据库进行交互)。使用JDBC,可以在不同的数据库功能模块层次上提供统一的用户界面,可以建立与数据库的连接,发送SQL语句和处理结果。

JDBC是跨数据库平台的,我们可以在java编程时,统一接口,用于访问多种数据库;
但是它也是基于某一种数据库而言的,对于不同的数据库产品连接的这一端,数据库接口是不同的,所以不同JDBC需要不同的JDBC类库,因此要了解这个数据库的API。
JDBC的核心是为用户提供Java API类库,让用户能够创建是数据库连接、执行SQL语句、检索结果集、访问数据库元数据等。

连接数据库用到的类和接口
java.sql.DriverManager:用于管理JDBC驱动程序
java.sql.Connection:用于建立与特定数据库的连接,一个连接就是一个会话
java.sql.PreparedStatement:用于创建一个SQL语句对象,该对象可以多次被使用,提高执行的效率
java.sql.ResultSet:用于返回SQL语句的结果集

创建数据库连接:是JDBC数据库应用的初步阶段,也是其他操作的基础。
JDBC编程步骤

  1. 声明四个重要的参数(username、password、url、driver)
//用户名
private static String username="scott";
//密码
private static String password="tiger";
//连接的是本地的还是其他电脑的数据库
private static String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
//驱动类  连接的是什么类型的数据库
private static String driver="oracle.jdbc.driver.OracleDriver";
  1. 加载驱动Load the Driver:通过类加载器来加载驱动
//加载驱动类
Class.forName(driver);

三种数据库的固定写法:
Mysql:com.mysql.jdbx.Driver
Oracle:oracle.jdbc.driver.OracleDriver
Sqlserver:com.microsoft.sqlserver.jdbc.SQLServerDriver

  1. 连接数据库Connect to the DataBase
//获取链接 connection对象,通过DriverManager获取到数据库的连接
Connection con=DriverManager.getConnection(url, username, password);
  1. 执行SQL语句Execute the SQL
  1. PreparedStatement.executeQuery();用于查询
  2. PreparedStatement.executeUpdate();用于新增、修改、删除
//获取statement  只能查询一次 一般使用PreparedStatement
PreparedStatement ps=con.prepareStatement("Select * from test");
//执行sql语句   返回的是一个结果集
ResultSet rs= ps.executeQuery();
  1. Retrieve the result data返回结果集,通过循环遍历取得结果while(rs.next()),输出结果,通过get()方法取得结。
    此外,需要封装一个po实体类,用来获取和设置值
public class User {
	private String name;
	private String sex;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
    public void setSex(String sex) {
		this.sex = sex;
	}
}
while (rs.next()) {//循环遍历
	user=new User();
user.setName(rs.getString("name"));
	user.setSex(rs.getString("sex"));
}
//输出 
System.out.println(user.getName());
  1. 关闭资源close
    close the Resultset / close the PreparedStatement/close the Connection
//关闭
rs.close();
ps.close();
con.close();

注意:连接数据库还有最重要的一步是引入jar包,不同的数据库有不同的jar包。

封装JDBC:我们用的时候需要封装JDBC,主要是优化代码,减少重复代码块的书写。
封装之前要准备一个properties工具类,利用写好的这个属性值进行获取
在这里插入图片描述
相关代码块:

public class DbUtil {
	private static String username=null;
	private static String password=null;
	private static String driver=null;
	private static String url=null;
	static{//必须是静态的,在加载类的时候加载
		//创建Properties   读取JDBC的一些参数
        Properties pro=new Properties(); 		
		//通过IO流读取   //通过类加载器获取到
		InputStream in=DbUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); 
		try {
			pro.load(in);	//加载					
			//获取各个参数	
			username=pro.getProperty("username");
			password=pro.getProperty("password");
			driver=pro.getProperty("driver");
			url=pro.getProperty("url");
			//加载驱动
			Class.forName(driver); 
			} catch (IOException e) {
			e.printStackTrace();}	
	}
	//封装连接
	public static Connection getConnection(){
		Connection con=null;
			try {		
				con=DriverManager.getConnection(url, username, password);
			} 
			catch (SQLException e) {
				e.printStackTrace();
			}
			catch (ClassNotFoundException e) {
				e.printStackTrace();
			}					
		return con;
	}
	//封装close(关闭资源)
	public static void close(Connection con,PreparedStatement ps,ResultSet rs){
			try {
					if(rs!=null){
						rs.close();
					}
					if(ps!=null){
						ps.close();
					}
					if(con!=null){
						con.close();
					}
				} catch (SQLException e) {
					e.printStackTrace();
			}
		}
}

注意:封装完之后,我们可以测试一下是否连接成功,在主方法中输出一下;如果出现异常报错,检查是否是驱动配置错误,为了避免出现这个错误,我们可以提前测试一下驱动是否连接成功
1、点击以下标记的选项
在这里插入图片描述
2、右键新建一个
在这里插入图片描述
3、弹出Database Driver框
在这里插入图片描述
4、点击测试,输入密码后,弹出框连接成功,可把url,driver名称复制到代码块,以免出错
在这里插入图片描述
完全成功连接好数据库之后,就可以进行SQL操作,我们直接通过类来调用封装好的方法就可以了(因为方法是用static修饰的),以下是一个查询操作。

@Override
	public List<User> selectAll() {	
		List<User> users=new ArrayList<User>();//创建list集合  返回的是一个集合
		try {
			//直接获取getConnection
			con=DBUtil.getConnection();//静态方法可以直接通过DBUtil类调用 获取Connection
			ps=con.prepareStatement("Select * from test");//通过连接直接获取到
			//执行    返回的是一个结果集
			ResultSet rs= ps.executeQuery();
			//返回的对象类型
			User user=null;
			//while循环遍历
			while(rs.next()){//判断是否有下一个
				//创建对象
				user=new User();
				user.setName(rs.getString("name"));
				user.setSex(rs.getString("sex"));				
				//添加到集合中
				users.add(user);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			//关闭资源
			DBUtil.close(con, ps, rs);
		}
		return users;//返回的类型
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值