JDBC&连接数据库&通过页面实现数据库的增删改查

JDBC:是负责与数据库连接的工具

在这里插入图片描述

三层结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JDBC

在这里插入图片描述
在这里插入图片描述

建包的规范

在这里插入图片描述
如果不是这样的结构显示的,可以进行下面操作:
在这里插入图片描述
点击这个三角。
选择Package Presentation调整视图结构。

com.woniu.

com.公司名字(个人名字)(.模块名字)

dao
和数据库交互的类(连接数据库)
servlet
和前端交互的类
service
业务逻辑
util
工具类     md5密码封装    单例模式 加载驱动的类  (服务java代码)
model
实体类(例如:User     数据的载体)

编写连接数据库的步骤:

1、先写model 建立javabean对象
a ). 对象里面声明的各种属性变量,要和数据库中表头的属性值一一对应,注意字符类型也要对应一致,varchar等对应String tinyint等对应int。
b ).建立有参、无参函数
c )。设置get set方法
d ).重写toString

2、写dao (在Dao包内写dao接口,在dao.impl里面继承接口,填写具体方法。)
3、写service(在service里面调用dao)
4、写servlet(重写doGet、doSet)
5、配置xml文件

注意:XML文件里面可以不赋值,但是要在servelt上面加上一句话
在这里插入图片描述
通过这句话给urlPatterns赋值。可以省去xml文件中的内容。
在这里插入图片描述
具体实现

  1. 根据数据库创建实体类

  2. 编写util类
    a)导入jdbc的包。
    1)右键项目 build path
    2)选择导入外部jar包 需要导入到lib文件下面(右键添加一下)
    3)点击保存
    注意:外部jar包位置不要变 目前只有一个 将来会有很多个
    b)创建静态变量(指定驱动连接 连接的地址 数据库账号 数据库密码)

    c)编写GetConnection方法
    d)编写关闭的方法
    b、c、d均在JDBC页面中部署完成。

3.编写dao层 dao中放的接口,里面定义了很多方法
例如:通过id找实体类
获得驱动连接
加载驱动
获得Statement (操作sql语句的)
获得ResultSet (获取结果集)

4.测试

连接jdbc的步骤

创建数据–创建实体类
在这里插入图片描述

按ctrl+F
在这里插入图片描述
创建构造函数。一个无参一个有参 删掉super。 然后set get toString

注意: 后面每个对象加上注释在这里插入图片描述

(2)建立jdbc配置文件。
在这里插入图片描述

注意:这里的root,123456是在安装数据库的时候设计的,默认的root 123456 在后期开发的时候设置数据库密码一定要记牢。
在这里插入图片描述
找到WebContent - WEB-INF - lib 右键 - build Path
在这里插入图片描述

在这里插入图片描述

导入jar包之后才可以使用。注意:jar包的位置不要变
在这里插入图片描述
这时,就可以编写jar包内的connection方法了。

Dao层

1.建立一个接口Dao 里面有五个方法。
在这里插入图片描述

dao层里面有五个方法
在这里插入图片描述

创建一个接口实现类。
在这里插入图片描述

继承Dao.
在这里插入图片描述

重写dao内的方法


在这里插入图片描述

这个number 就是执行sql查询的时候 返回一个影响了(?)行 的这个行数
在这里插入图片描述
因为id是自增长的 所以只需要其余的参数

注解:JDBC(连接数据库中最重要的四个基本对象)

JDBC中的主要类(接口)

在JDBC中常用的类有:
DriverManager;(注册驱动类,调用该类就执行静态代码块的内容,自己注册)
Connection;数据库连接, 可以得到statement,preparedStatement:java.sql.类
Statement;
ResultSet。

在JDBC中使用四个基本对象的步骤分为7步:

1、加载JDBC驱动程序:

在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),

这通过java.lang.Class类的静态方法forName(String className)实现。

例如:

try{

//加载MySql的驱动类

Class.forName(“com.mysql.jdbc.Driver”) ;

}catch(ClassNotFoundException e){

System.out.println(“找不到驱动程序类 ,加载驱动失败!”);

e.printStackTrace() ;

}

成功加载后,会将Driver类的实例注册到DriverManager类中。

2、提供JDBC连接的URL

?连接URL定义了连接数据库时的协议、子协议、数据源标识。

?书写形式:协议:子协议:数据源标识

协议:在JDBC中总是以jdbc开始

子协议:是桥连接的驱动程序或是数据库管理系统名称。

数据源标识:标记找到数据库来源的地址与连接端口。

例如:(MySql的连接URL)

jdbc:mysql:

//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;

useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为

gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。

3、创建数据库的连接

?要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,

该对象就代表一个数据库的连接。

?使用DriverManager的getConnectin(String url , String username ,

String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和

密码来获得。

例如:

//连接MySql数据库,用户名和密码都是root

String url = "jdbc:mysql://localhost:3306/test" ;

String username = "root" ;

String password = "root" ;

try{

Connection con =

DriverManager.getConnection(url , username , password ) ;

}catch(SQLException se){

System.out.println("数据库连接失败!");

se.printStackTrace() ;

}

4、创建一个Statement

?要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3

种类型:

1、执行静态SQL语句。通常通过Statement实例实现。

2、执行动态SQL语句。通常通过PreparedStatement实例实现。

3、执行数据库存储过程。通常通过CallableStatement实例实现。

具体的实现方式:

Statement stmt = con.createStatement() ;

PreparedStatement pstmt = con.prepareStatement(sql) ;

CallableStatement cstmt =

con.prepareCall("{CALL demoSp(? , ?)}") ;

5、执行SQL语句

Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate

和execute

1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句

,返回一个结果集(ResultSet)对象。

2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或

DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等

3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的

语句。

具体实现的代码:

ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;

int rows = stmt.executeUpdate("INSERT INTO ...") ;

boolean flag = stmt.execute(String sql) ;

6、处理结果

两种情况:

1、执行更新返回的是本次操作影响到的记录数。

2、执行查询返回的结果是一个ResultSet对象。

? ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些

行中数据的访问。

? 使用结果集(ResultSet)对象的访问方法获取数据:

while(rs.next()){

String name = rs.getString("name") ;

String pass = rs.getString(1) ; // 此方法比较高效

}

(列是从左到右编号的,并且从列1开始)

7、关闭JDBC对象

操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声

明顺序相反:

1、关闭记录集

2、关闭声明

3、关闭连接对象

if(rs != null){ // 关闭记录集

try{

rs.close() ;

}catch(SQLException e){

e.printStackTrace() ;

}

}

if(stmt != null){ // 关闭声明

try{

stmt.close() ;

}catch(SQLException e){

e.printStackTrace() ;

}

}

if(conn != null){ // 关闭连接对象

try{

conn.close() ;

}catch(SQLException e){

e.printStackTrace() ;

}

}

问题:看到了finally忘了怎么用了

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39263750/article/details/89359014