JDBC技术入门


今日内容
1.JDBC基本概念
2.快速入门
3.对JDBC中各个接口和类的详解

1.概念: Java数据库连接(Java Database Connectivity)。

JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂函去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类

2.快速入门:

步骤:

1.导入驱动jar包(jar包需要手动下载,导入方式不再赘述)
2.注册驱动
3.获取数据库连接对象 Connection
4.定义sql
5,获取执行sql语句的对象 statement
6,执行sql,接受返回结果
7.处理结果
8.释放资源

代码实现

//1.导入驱动jar包
//2.注册驱动
Class.forname("com.mysql.jdbc.Driver");
//3.获取数据库连接对象
Connection conn = Drivermanager.getConnection(jdbc:mysql://localhost: 3306/db3,root,password)
//4.定义sql语句(以更新操作为例)
String sql=“update account set balance=500 where id=1;
//5.获取执行sql的对象 Statement
Statement stmt =conn.createstatement();
//6.执行sql
int count = stmt.executeupdate(sql);
//7.处理结果
System.out.println(count);
//8.释放资源
stmt.close();
conn.close();

3.详解各个对象

1. Drivermanager

功能:
1.注册驱动:告诉程序该使用哪一个数据库驱动jar
static void registerdriver( Driver driver):注册与给定的驱动程序 Drivermanager
写代码使用: Class.forname(“com,mysql.jdbc. Driver”);
通过查看源码发現:在com.mysql.jdbc.Driver类中存在静态代码块

static{
	try {
		java.sql.Drivermanager.registerdriver(new Driver());
	}catch(Sqlexception E){
		throw new Runtimeexception(“Can’t register driver!");
	}
}
//注意:mysq1.5之后的驱动jar包可以省略注册驱动的步骤。

2.获取数据库连接
方法: static Connection getConnection(sting url, string user, string password)
参数:
url:指定连接的路径
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
细节:如果链接的是本机sql服务器,并且服务器默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称
user:用户名
password:密码

2. Connection:数据库连接对象

1.功能:

1.获取执行sql的对象
	Statement.createStatement()
	PreparedStatement.prepareStatement(String sql)
2.管理事务:
	开启事务: setAutoCommit( boolean autoCommit):调用该方法设置参数为 false,即开启事务
	提交事务: commit()
	回滚事务: rollback()

3. statement:执行sql的对象

执行sql:
1. boolean execute( string sql):可以执行任意的sql了解
2. int executeUpdate( string sql):执行DML( insert、 update、 delete)语句、DDL( create, alter、drop)语句
返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功返回值>9的则执行成功,反之,则失败。
3. Resultset executequery( string sql):执行DQL( select)语句

4. Resultset:结果集对象,封装查询结果

boolean next():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true
* getxxx(参数):获取数据
* Xxx:代表数据类型 如:int getInt()
string getstring()
*参数:
1. int :代表列的编号,从1开始 如: getString(1)
2. string :代表列名称。如:getDouble(“Name”)
*注意:
*使用步骤:
1.游标向下移动一行
2.判断是否有数据
3.获取数据

Resultset rs = null;
//循环判断游标是否是最后一行末尾。
while (rs.next()){
	//获取数据
    //6.2获取数据
    int ID = rs.getInt(1);
    String Name = rs.getString("name");
    System.out.println(ID + "--" + Name);
 }

练习题:
定义一个方法,查询emp表的数据将其封装为对象,然后装载集合,返回。
1.定义Emp类
2.定义方法 public List findAll(){};
3.实现方法 select * from emp;


完整代码:

//Emp实体类
package com.idea.Test;
import java.util.Date;
public class Emp {
    private int id;
    private String name;
    private int salary;
    Date join_time;
    
    public Emp() {
    }
    
    public Emp(int id, String name, int salary, Date join_time) {
        this.id = id;
        this.name = name;
        this.salary = salary;
        this.join_time = join_time;
    }
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    public Date getJoin_time() {
        return join_time;
    }

    public void setJoin_time(Date join_time) {
        this.join_time = join_time;
    }

    @Override
    public String toString() {
        return "emp{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", salary=" + salary +
                ", join_time=" + join_time +
                '}';
    }
}

//JDBC
package com.idea.Test;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class JDBC {
    public static void main(String[] args) {
        List<Emp> list = findAll();
        System.out.println(list);
    }
    public static List<Emp> findAll(){
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        List<Emp> list = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql:///Test", "root", "123456");
            String sql = "select * from emp";
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            Emp emp = null;
            list = new ArrayList<>();
            while (rs.next()){
                int id = rs.getInt(1);
                String name = rs.getString("name");
                int salary = rs.getInt(3);
                Date join_date = rs.getDate(4);
                emp = new Emp();
                emp.setId(id);
                emp.setName(name);
                emp.setSalary(salary);
                emp.setJoin_time(join_date);
                //装载集合
                list.add(emp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (rs != null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return list;
    }
}

注意:数据库建表时,最好把字段名和实体类成员变量名一一对应


数据库表
数据库表信息


运行结果:
运行结果


本文到此结束了,感谢您的阅读和支持!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值