java中原生jdbc学习

jdbc基础

1.概述
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。

JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。 今天我们使用的是mysql的驱动mysql-connector-java-5.1.37-bin.jar

2.JDBC规范(掌握四个核心对象):
DriverManager:用于注册驱动
Connection: 表示与数据库创建的连接
Statement: 操作数据库sql语句的对象
ResultSet: 结果集或一张虚拟表

3.JDBC原理
在这里插入图片描述
4.开发步骤
注册驱动
告诉jvm使用的是哪个数据库
获得连接
就是连接数据库,获取到数据库的连接对象,Connection对象
获得执行sql语句的对象
Connection连接对象获取执行sql语句的Statement对象
执行sql语句,并返回结果
Statement对象,执行增删改,返回结果,返回int数字,代表的是影响的行数
Statement对象,执行查询,返回结果集ResultSet对象
处理结果
增删改,返回结果,返回int数字,代表的是影响的行数,不用处理
执行查询,返回结果集ResultSet对象,需要处理,遍历或者封装对象
释放资源
Connection,Statement,ResultSet以上3个对象,都有close方法

5.API详解
注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 不建议使用,原因有2个:
导致驱动被注册2次
强烈依赖数据库的驱动jar
解决办法:
Class.forName(“com.mysql.jdbc.Driver”);

获得链接
static Connection getConnection(String url, String user, String password) :试图建立到给定数据库 URL 的连接。
参数说明:
url 需要连接数据库的位置(网址)
user用户名
password 密码
例如: getConnection(“jdbc:mysql://localhost:3306/day04”, “root”, “root”);
扩展:
URL:SUN公司与数据库厂商之间的一种协议。
jdbc:mysql://localhost:3306/day04
协议子协议 IP :端口号数据库mysql:jdbc:mysql://localhost:3306/day04 或者 jdbc:mysql:///day04(默认
本机连接) oracle数据库: jdbc:oracle:thin:@localhost:1521:sid

java.sql.Connection接口:一个连接
接口的实现在数据库驱动中。所有与数据库交互都是基于连接对象的。
Statement createStatement(); //创建操作sql语句的对象
java.sql.Statement接口: 操作sql语句,并返回相应结果
String sql = “某SQL语句”;
获取Statement语句执行平台:Statement stmt =con.createStatement();

常用方法:
int executeUpdate(String sql); --执行insert update delete语句.
ResultSet executeQuery(String sql); --执行select语句.
boolean execute(String sql); --仅当执行select并且有结果时才返回true,执行其他的语句返回false.

6.处理结果集(注:执行insert、update、delete无需处理)
ResultSet实际上就是一张二维的表格,我们可以调用其boolean next() 方法指向某行记录,当第一次调用next() 方法时,便指向第一行记录的位置,这时就可以使用ResultSet提供的 getXXX(int col) 方法来获取指定列的数据:(与数组索引从0开始不同,这里索引从1开始)

rs.next();//指向第一行
rs.getInt(1);//获取第一行第一列的数据

常用方法:
Object getObject(int index) / Object getObject(String name) 获得任意对象
String getString(int index) / String getString(String name) 获得字符串
int getInt(int index) / int getInt(String name) 获得整形
double getDouble(int index) / double getDouble(String name) 获得双精度浮点型

释放资源
与IO流一样,使用后的东西都需要关闭!关闭的顺序是先得到的后关闭,后得到的先关闭。

rs.close();
stmt.close();
con.close();
package jdbcxue;

import java.sql.*;

public class Demo01 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //addOne();
        //updateOne();
        //deleteOne();
        //queryOne();
        queryAll();
    }



    //添加一条记录
    private static void addOne() throws ClassNotFoundException, SQLException {
        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        //定义数据库的连接地址
        String url = "jdbc:mysql://localhost:3306/day02";
        //定义用户名
        String userName = "root";
        //定义密码
        String passWord = "123456";
        Connection con = DriverManager.getConnection(url, userName, passWord);
        //3.获得执行sql语句的对象
        Statement statement = con.createStatement();

        //定义sql语句
        String sql = "insert into scores(sid,score,sname) values(1,100,'柳岩')";
        //Statement对象调用exexuteUpdate方法执行sql语句,获取结果
        int result = statement.executeUpdate(sql);

        if (result > 0){
            System.out.println("添加一条记录成功");
        }else{
            System.out.println("添加一条记录失败");
        }
        //关闭资源
        statement.close();
        con.close();

    }

    //修改一条记录
    private static void updateOne() throws ClassNotFoundException, SQLException {
        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        //定义数据库的连接地址
        String url = "jdbc:mysql://localhost:3306/day02";
        //定义用户名
        String userName = "root";
        //定义密码
        String passWord = "123456";
        Connection con = DriverManager.getConnection(url, userName, passWord);
        //3.获得执行sql语句的对象
        Statement statement = con.createStatement();

        //定义sql语句
        String sql = "update scores set score=60 where sname='柳岩'";
        //Statement对象调用exexuteUpdate方法执行sql语句,获取结果
        int result = statement.executeUpdate(sql);

        if (result > 0){
            System.out.println("修改一条记录成功");
        }else{
            System.out.println("修改一条记录失败");
        }
        //关闭资源
        statement.close();
        con.close();
    }

    //删除一条记录
    private static void deleteOne() throws ClassNotFoundException, SQLException {
        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        //定义数据库的连接地址
        String url = "jdbc:mysql://localhost:3306/day02";
        //定义用户名
        String userName = "root";
        //定义密码
        String passWord = "123456";
        Connection con = DriverManager.getConnection(url, userName, passWord);
        //3.获得执行sql语句的对象
        Statement statement = con.createStatement();

        //定义sql语句
        String sql = "delete from scores where sname='柳岩'";
        //Statement对象调用exexuteUpdate方法执行sql语句,获取结果
        int result = statement.executeUpdate(sql);

        if (result > 0){
            System.out.println("删除一条记录成功");
        }else{
            System.out.println("删除一条记录失败");
        }
        //关闭资源
        statement.close();
        con.close();
    }

    //查询一条记录
    private static void queryOne() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");

        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/day02","root","123456");

        Statement statement = con.createStatement();

        String sql = "select * from scores where sid=1";

        ResultSet rs = statement.executeQuery(sql);

        if (rs.next()){
            int sid = rs.getInt(1);//根据列的编号
            int score = rs.getInt(2);
            String sname = rs.getString("sname");
            System.out.println("编号:" + sid + ",姓名:" + sname + ",成绩:" + score);
        }else {
            System.out.println("没有该学生");
        }

        rs.close();
        statement.close();
        con.close();
    }

    //查询所有记录
    private static void queryAll() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");

        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/day02","root","123456");

        Statement statement = con.createStatement();

        String sql = "select * from scores";

        ResultSet rs = statement.executeQuery(sql);

        while (rs.next()){
            Object sid = rs.getObject(1);//根据列的编号
            Object score = rs.getObject(2);
            Object sname = rs.getObject(3);
            System.out.println("编号:" + sid + ",姓名:" + sname + ",成绩:" + score);
        }

        rs.close();
        statement.close();
        con.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值