Java基础:用JDBC操纵数据库以及完善

本文介绍了Java使用JDBC进行数据库操作的基础,包括JDBC的工作流程,展示了DML和DQL操作示例。接着讨论了如何通过创建工具类和配置文件降低代码耦合度,以提高代码复用性和灵活性。最后,文章探讨了SQL注入问题及其解决方案,推荐使用PreparedStatement类来防止此类安全威胁。
摘要由CSDN通过智能技术生成

目录

JDBC的基本使用

创建工具类、配置文件来降低代码的耦合度

解决SQL注入


JDBC的基本使用

JDBC的含义:

Java DataBase Connectivity,Java数据库连接

*JDBC定义了操作所有关系型数据库的规则(接口),各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们可以使用这套接口编程,但真正执行的是驱动jar包中的实现类

使用JDBC流程:

1.导入驱动jar包:mysql-connector-java-5.1.37-bin.jar
2.注册驱动
3.获取数据库的连接对象 Connection 
4.定义sql语句从而操纵数据库
5.获取执行sql语句的对象 Statement
6.执行sql,接受返回结果
7.处理结果
8.释放资源

下面简单介绍一个例子,以一个DML语句为例:

首先用IDEA创建好一个项目,然后在项目中创建一个libs文件夹,将jar包放入其中,并右击libs文件夹--Add as Library

之后看一下代码:

package cn.itcast.jdbc;

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

public class jdbcUpdate {
    public static void main(String[] args) throws SQLException {
        //0.抽取变量,复用
        Statement stmt = null;
        Connection conn = null;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.定义sql
            String sql = "update account set balance = 1500 where id = 3";
            //3.获取Connection对象,如果你访问的数据库端口是默认的3306,就可以省略成///
            conn = DriverManager.getConnection("jdbcUtils:mysql:///mytest","root","root");
            //4.获取执行sql的对象 Statement
            stmt = conn.createStatement();
            //5.执行sql
            int count = stmt.executeUpdate(sql);//影响的行数
            System.out.println(count);
            //6.处理结果
            if(count > 0){
                System.out.println("修改成功");
            }else{
                System.out.println("修改失败");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            //7.释放资源
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

*有些方法会报红线让你处理异常,比如getConnection我们可以选择抛出异常,而释放资源的方法我们就选择try catch。

 

DQL语句和DML相比,在执行sql的过程有所变化:DML语句返回的是一个int类型的变量,告知你此条操作对数据库影响的行数,而DQL语句返回的是一个结果集ResultSet。依旧看例子:

package cn.itcast.jdbc;

import java.sql.*;

public class jdbcDQL {
    public static void main(String[] args) {
        //0.抽取变量,复用
        Statement stmt = null;
        Connection conn = null;
        ResultSet rs = null;  //结果集对象
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取Connection对象
            conn = DriverManager.getConnection("jdbcUtils:
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值