栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-10-21 JDBC连接数据库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-10-21 JDBC连接数据库

前端技术+数据库+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等

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号