2021-10-21 JDBC连接数据库

本文介绍了使用Java的JDBC技术连接和操作数据库的基础步骤,包括JDBC的定义、连接数据库的过程、JDBCAPI的使用,以及DAO层的分层开发模型。详细讲解了查询、增加和修改数据的操作,并探讨了分层开发的好处和MVC设计思想在项目中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前端技术+数据库+java后台

JDBC技术

1.JDBC定义

JDBC:(Java Database connectivity)java数据库连接技术.

一个系统是由java的JDBC技术获取到数据库的数据展示在页面上进行可视化的数据展示,获取用户通过

简单直观的页面操作然后由java后台技术对数据库 进行CRDU.

2.JDBC技术连接上数据库

步骤:

1.创建mysql数据库和表
2.java连接不同的数据库,需要有不同的数据库厂商提供的数据驱动jar包(可以去厂商官网下载)
别忘记build path进去
3.编写代码,加载驱动
4.建立连接,创建ConnectionStatement对象,负责发送SQL指定到数据.
5.创建SQL指令,创建PreperedStatement对象,负责发送SQL指定到数据.
6.PreperedStatement对象执行executeQuery查询,执行executeUpdate增删改
7.关闭资源对象
public class JDBCTest01 {
public static void main(String[] args) {
// String url="jdbc:mysql://localhost:3306/myschooldb";
//连接数据库地址
String url="jdbc:mysql://172.168.1.41:3306/myschooldb";
//连接数据库的账号和密码
String user="zhangfei";
String password="sa123";
try {
//1.加载驱动(加载进内存)
Class.forName("com.mysql.jdbc.Driver");
//2.建立数据库连接
DriverManager.getConnection(url, user, password);
System.out.println("连接成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

3.JDBCAPI:

API指查询的帮助文档,也可以是Application  interface应用程序接口;
JDBC技术提供了一些常用的API来实现java对数据库的数据增删改查操作
Connection接口:负责和数据库建立连接
PreperedStatement接口:发送SQL语句到数据库
ResultSet接口:返回查询到结果集集合的

4.查询

public class JDBCTest01 {
public static void main(String[] args) {
// String url="jdbc:mysql://localhost:3306/myschooldb";
//连接数据库地址
String url="jdbc:mysql://172.168.1.41:3306/myschooldb";
//连接数据库的账号和密码
String user="zhangfei";
String password="sa123";
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
//1.加载驱动(加载进内存)
Class.forName("com.mysql.jdbc.Driver");
//2.建立数据库连接,返回连接对象
conn=DriverManager.getConnection(url, user, password);
System.out.println("连接成功!");
String sql="SELECT studentNo,studentName,sex,age,address FROM student ";
//PreparedStatement对象 负责发送SQL命令到数据库
pstmt= conn.prepareStatement(sql);
//pstmt.executeQuery()方法执行查询方法,返回一个无序的结果集合
rs=pstmt.executeQuery();
System.out.println("学号\t姓名\t性别\t年龄\t地址");
while(rs.next()){
// int sNo=rs.getInt(1);
int sNo=rs.getInt("studentNo");
String studentName=rs.getString("studentName");
String sex=rs.getString("sex");
int age=rs.getInt("age");
String address=rs.getString("address");
System.out.println(sNo+"\t"+studentName+"\t"+sex+"\t"+age+"\t"+address);
}
//executeUpdate执行增删改SQL语句返回受影响行数
// int count=pstmt.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
    //关闭资源
    try{
        if(rs != null){
            rs.close();
        }
        
        if (pstmt!=null) {
        pstmt.close();
        }
        if (conn!=null) {
        conn.close();
        }
        } catch (SQLException e) {
        e.printStackTrace();
        }
       }
      }
     }

5.增加

public class JDBCTest03 {
public static void main(String[] args) throws Exception {
String url="jdbc:mysql://localhost:3306/myschooldb?
useSSL=true&characterEncoding=utf-8";
String user="zhangfei";
String password="sa123";
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建conn连接对象 建立连接
Connection conn= DriverManager.getConnection(url, user, password);
Scanner input=new Scanner(System.in);
System.out.println("请输入学号:");
int iNo=input.nextInt();
System.out.println("请输入姓名:");
String iName=input.next();
System.out.println("请输入密码:");
String iPwd=input.next();
System.out.println("请输入性别:");
String iSex=input.next();
System.out.println("请输入年龄:");
int iAge=input.nextInt();
System.out.println("请输入地址:");
String iAddress=input.next();
System.out.println("请输入出生日期:");
String iBorndate=input.next();
String sql="INSERT INTO student VALUES (?,?,?,?,?,?,?);";
//创建pstmt对象,负责发送SQL指令到数据库 ,prepareStatement(sql)创建pstmt对象的时
候,就将SQL预编译
//?代表可以这个SQL语句可以传递7个参数的值
PreparedStatement pstmt=conn.prepareStatement(sql);
//依次给7个?号传参赋值
pstmt.setInt(1,iNo);
pstmt.setString(2,iName);
pstmt.setString(3,ipwd);
pstmt.setString(4,iSex);
pstmt.setInt(5,iAge);
pstmt.setString(6,iAddress);
pstmt.setString(7,iBorndate);
int count=pstmt.executeUpdate();
if (count>0) {
System.out.println("增加学生成功!");
}else {
System.out.println("增加学生失败!");
}
//关闭资源
pstmt.close();
conn.close();
}
}

6.修改

public class JDBCTest04 {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/myschooldb",
"zhangfei", "sa123");
Scanner input=new Scanner(System.in);
System.out.println("请输入需要修改的信息的学号:");
int iNo=input.nextInt();
System.out.println("请输入新的姓名:");
String iName=input.next();
System.out.println("请输入新的地址:");
String iAddress=input.next();
System.out.println("请输入新的出生日期:");
String iBorndate=input.next();
String sql="UPDATE student SET studentName=?,address=?,borndate=? WHERE
studentNo=?";
pstmt=conn.prepareStatement(sql);
//按SQL的?的顺序和类型 给参数赋值
pstmt.setString(1, iName);
pstmt.setString(2, iAddress);
pstmt.setString(3, iBorndate);
pstmt.setInt(4, iNo);
//executeUpdate执行增删改语句,返回受影响行数
int count=pstmt.executeUpdate();
if (count>0) {
System.out.println("修改成功!");
}else {
    System.out.println("修改失败!");
}
}catch(ClassNotFoundException e){
    e.printStackTrace();
}catch (SQLException e) {
    e.printStackTrace();
    }finally {
    //关闭资源
    try {
    if (rs!=null) {
    rs.close();
    }
    if (pstmt!=null) {
    pstmt.close();
    }
    if (conn!=null) {
    conn.close();
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
    }

Dao层分层开发

1.dao定义

DAO(Data Access object)层,叫数据访问层
分层开发模型:

在这里插入图片描述

分层开发的好处:

1.各司其职,每一层去做自己的事情
2.上一层依赖于下一层;但不能跨层
3.松耦合,利于后期项目的扩展和维护

MVC设计思想:

MVC不算技术,是程序设计非常主流的一种思想,通俗点讲就是将一个完整的项目分为多个层面来开发

M: (model)模型层;实体类,ORM类型框架

V:(view)视图层,jsp,html,css,jQuery,vue等

C:(controller)控制层;servlet,spring等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值