JDBC基础入门使用

JDBC:Java DataBase Connectivity,即为Java数据库连接。

JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。即:定义的一套操作所有关系型数据库的规则,是为接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

JDBC简单使用

快速入门
  • 步骤:
    1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
      1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
      2.右键–>Add As Library
    2. 注册驱动
    3. 获取数据库连接对象 Connection
    4. 定义sql
    5. 获取执行sql语句的对象 Statement
    6. 执行sql,接受返回结果
    7. 处理结果
    8. 释放资源
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBCDemo01 {
     /**
     * 更新一条数据库数据
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        //1.导入驱动jar包(类似于Python中的第三方库
        //2.注册驱动
        Class.forName("com.mysql.jdbc.Driver");//
        //3.获取数据库连接对象 jdbc:mysql://localhost:3306/databases 本机
        Connection conn = DriverManager.getConnection("jdbc:mysql://url:port/Database", "username", "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);
        stmt.close();
        conn.close();
    }
}

因为,在数据库连接、SQL语句的执行等等过程中,可能会发生异常,报错等。但是,数据库的资源要释放,故采用异常处理的方式,关闭数据库连接。

处理异常的方式:

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

/**
 * 1.采用异常的方式通过JDBC连接数据库
 * 2.插入一条语句
 */
public class JDBCDemo02 {
    public static void main(String[] args) {
        // 为了使Connection方法可以接受到值,故将参数提升到成员变量的位置上
        Statement stmt = null;
        Connection conn = null;
        // 异常捕获的方式处理异常
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.定义SQL语句
            String sql = "insert into account values(null,'Lisa',2000)";
            //3.获取连接对象 
            conn = DriverManager.getConnection("jdbc:mysql://url:port/db3", "username", "password");
            //4.获取执行sql对象
            stmt = conn.createStatement();
            //5.执行sql
            int count = stmt.executeUpdate(sql);
            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();
                }
            }
        }
    }
}

详解
  1. DriverManager:驱动管理对象

    用于注册驱动,jar包导入。

    通过查看源码发现:在com.mysql.jdbc.Driver类中存在静态代码块
    				 static {
    				        try {
    				            java.sql.DriverManager.registerDriver(new Driver());
    				        } catch (SQLException E) {
    				            throw new RuntimeException("Can't register driver!");
    				        }
    					}
    

    **原因:**文件的读取,只需要读取一次,即可拿到这些值。故使用静态代码块完成。

  2. static Connection getConnection(String url, String user, String password)

    Connection:数据库连接对象

    功能:
    1. 获取执行sql的对象
    * Statement createStatement()
    * PreparedStatement prepareStatement(String sql)

     2. 事务管理:
    
     * 开启事务:setAutoCommit(boolean autoCommit) :调用该方法设置参数为false,即开启事务
     * 提交事务:commit() 
     * 回滚事务:rollback() 
    
     3. `Statement`:执行sql的对象
    
     **注意**:`createStatement`方法会造成SQL注入的问题,后期采用`PreparedStatement`来执行SQL对象,并采用预编译的方式,采用参数`?`作为占位符,且效率更高。
    
     4. `ResultSet`:结果集对象,封装查询结果(next,类似指针移动取值方法)
    
     * boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则返回true.
     * getXxx(参数):获取数据.
         - 其中Int代表列的编号,参数**从1开始**。
         - String代表列的名称(参数)。
    
JDBC操作数据库的一般SQL语法
  1. 更新操作

String sql = "update account set balance = 500 where id = 1";

  1. 插入操作

String sql = "insert into account values(null,'Lisa',2000)";

  1. 删除操作

String sql = "delete from account where id = 3";

  1. 创建操作
String sql = "create table student (id int primary key not null,name varchar(20))";
stmt = conn.createStatement();
int count = stmt.executeUpdate(sql);//处理结果,创建表返回的为0
System.out.println(count);
  1. 查询操作
            String sql = "select * from account";
            stmt = conn.createStatement();
            resultSet = stmt.executeQuery(sql);
            while (resultSet.next()) { //resultSet指针下移一行,并判断当前行内容是否为空,内容不为空,进入循环体
                int id = resultSet.getInt(1);// 取第一列的元素
                String name = resultSet.getString("NAME");
                int balance = resultSet.getInt(3);
                System.out.println(id + "---" + name + "---" + balance);
            }

参考文献

[1] Java数据库连接

[2] Itcast视频资料

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值