Java项目实训开发(四)------连接数据库

再Java web项目开发中,要不可避免地使用数据库,而不同重量的数据库(如MySQL,Oracle)内部处理数据的方式不同,如果直接用数据库的访问接口来操作数据库,应用程序的可移植性会很差,所以我们将采用JDBC,一套访问数据库的标准Java类库

一.JDBC

JDBC时一套用于执行SQL语句的JavaAPI

在最开始,未产生JDBC时,应用程序时直接与数据库进行交互的,那么就会用到不同的数据库的接口,那么当用户在程序中更换要操作的数据库时,则也要重新更换新的数据库接口,代码改动很大

产生JDBC后,应用程序则会和JDBC交互,用JDBC提供的各种数据库驱动来与各数据库连接

这样提高了数据库的通用性,而通过JDBC连接到的数据库再使用SQL语句即可完成对数据库中数据的操作

二.JDBC常用API

1.Driver接口

Driver接口是所有JDBC驱动程序必须实现的接口,在编写程序时,必须把数据库的驱动jar包加载到项目中

2.DriverManager类

DriverManager类用于创建与数据库的连接,在这个类中要用到重要的静态方法来获取Connection对象(getConnection(String url, String user, String pwd))

3.Connection接口

Connection接口表示程序与数据库的连接,只有获得了Connection对象才能访问数据库

接口中定义了一系列方法,我最常用的是prepareStatement(String sql)用来获取PreparedStatement对象

4.Statement接口

Statement接口主要是对数据库中的表进行操作,执行SQL语句,该接口提供了执行SQL语句的3个常用方法。

在实际开发中,使用Statement接口会比较繁琐且存在安全问题,所以我们可以使用PreparedStatement接口

5.PreparedStatement接口

它是Statement的子接口,拓展了带参数的SQL执行语句,用“?”来代替参数,再通过setter()方法,如:setString(),setFloat(),setInt(),setObject()等为参数赋值

setObject()表示参数无论是何种类型,都可以用。

executeUpdate()实现数据库增删改的功能

executeQuery()事项数据库查询的功能

6.ResultSet接口

ResultSet接口用于保存查询语句返回的结果集,将其封装到一个表格中

应用程序中常常调用next()方法作为循环条件来迭代结果集

接口也定义了大量getter()方法(同setter()类似)来获取数据

三.编写 JDBC程序

1.加载并注册数据库驱动

2.通过DriverManager获取Connection对象

3.通过Connection获取Prepare Statement对象

4.编写要执行的SQL语句

5.使用Prepare Statement对象执行SQL语句,获取结构

6.对ResultSet结果集进行操作(查询,迭代....)

7.关闭连接,释放资源

注意在写程序时要抛出异常,用alt + enter 可以快速抛出。

代码附注释:

package com.my002.test;
//注册账号
import java.sql.*;
import java.util.Collection;
import java.util.Scanner;

public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        //设计一个简单的注册页面
        //创建一个键盘输入的扫描包
        Scanner sc = new Scanner(System.in);  //创建了一个Scanner对象in,这个作用就是获取控制台的输入
        System.out.println("欢迎来到用户注册系统");
        System.out.println("请输入您要注册的用户的账号");
        //接收用户注册的用户名
        String userName = sc.nextLine();   //接收String类型的数据
        System.out.println("请输入您要注册的用户的密码");
        //接收键盘输入的密码
        String userPwd = sc.nextLine();
        PreparedStatement ps = null;
        Connection conn = null;
        //连接数据库,把输入的账号和密码保存到数据库中
        //加载驱动:反射机制
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //通过驱动管理器,连接数据库
             conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/a01","root","1234");//aa不定,自己定义,直接加catch,不要try catch
            //编写sql语句:注册账号的sql语句,在写其他功能时,只修改这里即可
            //UPDATE users SET password = ? WHERE userName = ?;
            //delete from users where userName = ?;
            String sql="insert into users(userName,userPwd) values(?,?)";
            //预处理sql语句:把sql语句发送到数据库上
            ps = conn.prepareStatement(sql);
            //给?赋值:
            ps.setString(1,userName);
            ps.setString(2,userPwd);
            //执行sql语句
            int num = ps.executeUpdate();
            //处理结果
            if(num > 0){
                System.out.println("注册成功!!!!");
            }else{
                System.out.println("注册失败!!!!");
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            try {
                ps.close();  //ps是一个局部变量,
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-day day up-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值