java基础之数据库(JDBC)

数据库(JDBC)

1. JDBC是什么?
答:JDBC是一种用于执行SQL语句的javaAPI,可以为多种关系型数据库提供统一访问,它是由一组java语言编写的类和接口,JDBC作用就是访问数据库。
在这里插入图片描述

2. Jdbc访问数据库需要用到的类,接口,方法?
答: java反射机制Class.forname(classname)–加载数据库驱动

  1. java.sql.Connection接口
    2.java.sql.DriverManager类[管理一组 JDBC 驱动程序的基本服务]
    3.java.sql.Statement接口 [用于执行静态 SQL 语句并返回它所生成结果的对象]
    4.java.sql.PreparedStatement接口(SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。)
    DriverManager
    管理JDBC驱动的服务类,主要通过它获取Connection数据库链接,常用方法如下:
    public static synchronized Connection getConnection(String url, String user, String password) throws Exception;该方法获得url对应的数据库的连接。
    Connection常用数据库操作方法:
    Statement createStatement throws SQLException: 该方法返回一个Statement对象。
    PreparedStatement prepareStatement(String sql) throws SQLException;该方法返回预编译的Statement对象,即将SQL语句提交到数据库进行预编译。
    CallableStatement prepareCall(String sql) throws SQLException:该方法返回CallableStatement对象,该对象用于存储过程的调用。
    上面的三个方法都是返回执行SQL语句的Statement对象,PreparedStatement、CallableStatement的对象是Statement的子类,只有获得Statement之后才可以执行SQL语句。
    Statement
    用于执行SQL语句的API接口,该对象可以执行DDL、DCL语句,也可以执行DML语句,
    还可以执行SQL查询语句,当执行查询语句是返回结果集,常用方法如下:
    ResultSet executeQuery(String sql) throws SQLException:该方法用于执行查询语句,并返回查询结果对应的ResultSet对象,该方法只用于查询语句。
    int executeUpdate(String sql) throws SQLException:该方法用于执行DML语句,并返回受影响的行数;
    该方法也可以执行DDL,执行DDL返回0;
    boolean execute(String sql) throws SQLException:该方法可以执行任何SQL语句,如果执行后第一个结果是ResultSet对象,则返回true;如果执行后第一个结果为受影响的行数或没有任何结果,则返回false;
    PreparedStatement
    预编译的statement对象,PreparedStatement是Statement的子接口,它允许数据库预编译SQL(通常指带参数SQL)语句,以后每次只改变SQL命令参数,避免数据库每次都编译SQL语句,这样性能就比较好。而相对于Statement而言,使用PreparedStatement执行SQL语句时,无需重新传入SQL语句,因为它已经预编译了SQL语句。
    但是PreparedStatement需要为编译的SQL语句传入参数值,所以它比了如下方法:
    void setXxx(int index, value)根据该方法传入的参数值的类型不同,需要使用不同的方法。传入的值的类型根据传入的SQL语句参数而定。
    ResultSet
    void close() throws SQLException:释放、关闭ResultSet对象
    boolean absolute(int row):将结果集移动到第几行,如果row是负数,则移动到倒数第几行。
    如果移动到的记录指针指向一条有效记录,则该方法返回true;
    void beforeFisrt(): 将ResultSet的记录指针定位到首行之前,这是ResultSet结果集记录指针的初始状态:记录指针的起始位置位于第一行之前。
    boolean first():将ResultSet的记录指针定位到首行。如果移动后的记录指针指向一条有效记录,则该方法返回true。
    boolean previous():将ResultSet的记录指针定位到上一行,如果移动后的记录指针指向一条有效记录,则该方法返回true。
    boolean next():将ResultSet的记录指针定位到下一行。如果移动后的记录指针指向一条有效记录,则返回true。
    boolean last():将ResultSet的记录指针定位到最后一行。如果移动后的记录指针指向一条有效记录,则返回true。
    void afterLast():将ResultSet的记录指针定位到最后一行之后。
    注意:在JDK1.4以前只支持next移动,且每次移动一个位置。到JDK1.5就可以随意定位。

3.Jdbc访问数据库的流程?
答: 在这里插入图片描述

  1. 下载数据库驱动包“mysql-connector-java-5.1.38.jar”
  2. 打开数据库创建保存数据的数据表
--创建数据库表
create  table t_person(
per_id int  primary key auto_increment,
per_name varchar(20),
per_age int,
per_sex bit,
per_address  varchar(30)
);
  1. 创建一个普通的java工程
  2. 导入数据库驱动包到java工程
  3. 在java工程下创建一个“lib”文件夹,将下载好的数据库驱动赋值到lib文件夹中
  4. 选中工程—右键–Bulid Path–Configure Bulid Path–Libraries–Add Jars…–自己工程—lib–数据库驱动包—选中—OK
  5. 参照数据库表创建保存数据的java类
package com.click369.bean;
import java.io.Serializable;
/**
 * 保存个人信息的java类
 * @author Administrator
 *
 */
@SuppressWarnings("serial")
public class Person implements Serializable{
   
	private  int perid;
	private  String pername;
	private int perage;
	private boolean persex;
	private  String peraddress;
	public int getPerid() {
   
		return perid;
	}
	public void setPerid(int perid) {
   
		this.perid = perid;
	}
	public String getPername() {
   
		return pername;
	}
	public void setPername(String pername) {
   
		this.pername = pername;
	}
	public int getPerage() {
   
		return perage;
	}
	public void setPerage(int perage) {
   
		this.perage = perage;
	}
	public boolean isPersex() {
   
		return persex;
	}
	public void setPersex(boolean persex) {
   
		this.persex = persex;
	}
	public String getPeraddress() {
   
		return peraddress;
	}
	public void setPeraddress(String peraddress) {
   
		this.peraddress = peraddress;
	}
}
  1. 加载数据库驱动得到数据库连接
package com.click369.db;
/**
 * 数据库连接的管理类
 * 1.加载数据库驱动
 * 2.得到数据库连接
 * @author Administrator
 *
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class  DBConnection{
   
	//定义数据库驱动名称
	private  static  final String DRIVERNAME="com.mysql.jdbc.Driver";
	//定义连接数据库的url
	private  static  final String URL="jdbc:mysql://127.0.0.1:3306/mydb1";
	//定义数据库访问用户名
	private static final String USERNAME="root";
	//定义访问数据库的密码
	private static final String PASSWORD="123456";
	
	//加载数据库驱动
	//1.构造方法加载数据库驱动
	/*
	public  DBConnection(){
		//通过反射机制加载数据库驱动
		try {
			Class.forName(DRIVERNAME);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	*/
	//2.通过静态代码块加载驱动
	static{
   
		//通过反射机制加载数据库驱动
				try {
   
					Class.forName(DRIVERNAME);
				} catch (ClassNotFoundException e) {
   
					e.printStackTrace();
				}
	   }
	/**
	 * 得到数据库连接
	 */
	public static Connection getMyConnection(){
   
		 //定义数据库连接对象
		Connection conn=null;
		//得到数据库连接
		try
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值