0
点赞
收藏
分享

微信扫一扫

JavaWeb基础学习笔记4——JDBC

witmy 2022-01-24 阅读 79

1、JDBC基本概念

JDBC(Java DataBase Connectivity):Java数据库连接,Java语言操作数据库。

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

2、快速入门

步骤:

  1. 导入驱动jar包:下载地址 MySQL :: Download MySQL Connector/J (Archived Versions)

    驱动jar包即解压后的 mysql-connector-java-5.1.37-bin.jar 文件。 导入驱动jar包分两步:① 复制 mysql-connector-java-5.1.37-bin.jar 到项目的libs目录下(新建一个libs目录);② 右键libs文件夹,点击 Add as library 。
  2. 注册驱动:
    Class.forName("com.mysql.jdbc.Driver");
  3. 获取数据库的连接对象Connection:
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase?characterEncoding=utf-8", "root", "123456");
  4. 定义sql:
    String sql = "update student set age = 0 where id = 1";
  5. 获取执行sql语句的对象Statement:
    Statement stmt = conn.createStatement();
  6. 执行sql,接收返回的结果:
    int count = stmt.executeUpdate(sql);
  7. 处理结果:
    System.out.println(count);

代码演示:

package JDBCPackage;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * JDBC快速入门
 */
public class JdbcDemo1 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1、导入驱动jar包 -> libs文件夹
        //2、注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //3、获取数据库的连接对象
        Connection conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/mydatabase?characterEncoding=utf-8", "root", "123456");
        //4、定义sql语句
        String sql = "update student set age = 0 where id = 1";
        //5、获取执行sql的对象
        Statement stmt = conn.createStatement();
        //6、执行sql
        int count = stmt.executeUpdate(sql);
        //7、处理结果
        System.out.println(count);
        //8、释放资源
        stmt.close();
        conn.close();
    }
}

3、详解各个对象

3.1、DriverManager:驱动管理对象。

3.1.1、DriverManager的功能:

1、注册驱动:告诉程序该使用哪一种数据库驱动jar包。

-注册与给定的驱动程序DirverManager
static void registerDriver(Driver driver)

写代码时使用: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!");
        }
    }

注意:mysql5之后的驱动的jar包可以省略注册驱动的步骤。2、

2、获取数据库连接对象

-获取数据库连接对象
static Connection getConnection(String url, String user, String password)

参数:
url:指定连接的路径。
mysql的语法写url:jdbc:mysql://ip地址(域名):端口号/数据库名称。
如果连接的是本机mysql服务器,并且mysql服务器默认端口是3306,则url可以简写为jdbc:mysql:///数据库名称
user:用户名
password:密码

范例:
Connection conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/mydatabase?characterEncoding=utf-8", "root", "123456");

3.2、Connection:数据库连接对象。

3.2.1、Connection的功能

1、获取执行sql的对象

-获取执行sql的对象。两种方式:
Statement createStatement()
PreparedStatement preparedStatement(String sql)

2、管理事务

-开启事务。调用该方法,设置参数为false,即为开启事务。
void setAutoCommit(boolean autoCommit)

-提交事务。
void commit()

-回滚事务
void rollback()

3.3、Statement:执行sql的对象。

3.3.1、Statement的功能

1、执行sql

-执行任意的sql(了解即可)
boolean execute(String sql)

-执行DML(insert、update、delete)语句、DDL(create、alter、drop)语句
int executeUpdate(String sql)
返回值:影响的行数,可以通过这个影响的行数来判断DML语句是否执行成功。

-执行DQL(select)语句
ResultSet executeQuery(String sql)

代码演示:

package JDBCPackage;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * account表添加一条记录 insert语句
 */
public class JDBCDemo2 {
    public static void main(String[] args) {
        Statement stmt = null;
        Connection conn = null;
        try {
            //1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2、定义sql
            String sql = "insert into account values (null,'王五',3000)";
            //3、获取Connection对象
            conn = DriverManager.getConnection("jdbc:mysql:///mydatabase?characterEncoding=utf-8",
                    "root", "123456");
            //4、获取执行sql的对象
            stmt = conn.createStatement();
            int count = stmt.executeUpdate(sql); //返回影响的行数
            //5、处理结果
            System.out.println(count);
            if(count > 0) {
                System.out.println("添加成功!");
            }else {
                System.out.println("添加失败!");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //避免空指针异常
            if(stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3.4、ResultSet:结果集对象

3.4.1、ResultSet的功能

ResultSet为结果集对象,用来封装查询的结果。

-游标向下移动一行
boolean next():

-获取数据。
getXxx(参数)
Xxx代表数据类型,如int getInt(), String getString(), ...
参数:两种重载:
int:代表列的编号。    如:getString(1);为获取该行第1列的值
String:代表列名称。   如:getString("name");

3.5、PreparedStatement:是Statement的子类,可以执行sql的对象,功能更强大。

PreparedStatement

举报

相关推荐

0 条评论