JDBC保姆级入门分享

1、JDBC简介概念:JDBC全称(Java DataBase Connectivity)Java数据库连接,通俗的讲就是Java语言通过连接数

1、JDBC简介

概念:JDBC全称(Java DataBase Connectivity)Java数据库连接,通俗的讲就是Java语言通过连接数据库,从而达到对数据进行增、删、改、查的技术。

JDBC保姆级入门分享

2、实现原理

市面上流行的关系型数据库有很多,比如说MySql、Oracle、SqlServer、DB2等等。由于这些数据库是由不同的公司开发的,所以要想做到连接数据库那么Java语言就需要为每款数据库都开发一套代码来操作相应的数据库,而这样做显而易见是不现实的。

JDBC保姆级入门分享

为了能够统一的使用一套Java代码操作所有的关系型数据库,SUN公司开发了一个技术,就是JDBC。JDBC提供了一套操作所有关系型数据库的标准,即接口。由不同的厂商来写不同的是实现类来实现这个接口,也就是所谓的驱动程序,以此来实现Java操作数据库的能力。

JDBC保姆级入门分享

3、JDBC操作步骤

JDBC在使用的时候非常简单,只需要通过简单的几个操作就可以连接上数据库并进行操作

JDBC操作数据库的步骤具体如下:

  1. 导入驱动jar包
  2. 注册驱动
  3. 获取数据库连接对象Connection
  4. 定义要执行的SQL语句
  5. 获取用来执行SQL语句的Statement对象或PreparedStatement对象
  6. 调用方法执行SQL语句
  7. 处理结果集
  8. 释放资源
JDBC保姆级入门分享

4、JDBC具体步骤

  • 环境准备

首先准备一张表格,这里以student学生表为例

JDBC保姆级入门分享

  • 创建项目并导入驱动jar包
JDBC保姆级入门分享

创建新项目

JDBC保姆级入门分享

创建Web项目

JDBC保姆级入门分享

输入项目名称

JDBC保姆级入门分享

在web目录下创建lib目录,然后将准备好的mysql驱动jar包复制进去

JDBC保姆级入门分享

在jar包点击右键,然后选择Add as Library,然后选择OK

  • 注册驱动
//2、注册驱动
Class.forName("com.mysql.jdbc.Driver");

注册驱动的作用是用来确定具体使用那款数据库,上图中的驱动是用来连接MySql的驱动类路径,不同的数据库类路径不同。具体可以参考下方字符串:

MySql: com.mysql.jdbc.Driver

Oracle: oracle.jdbc.driver.OracleDriver

SqlServer : com.microsoft.jdbc.sqlserver.SQLServerDriver

  • 获取数据库连接对象
//3、获取数据库连接对象
Connection  con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test","root","root");

获取数据连接的方法为:

static Connection getConnection(String url,String user,String password);

url : 用来指定连接的路径,不同的数据库连接路径也是不同的,这里以MySql为例

user : 要连接数据库的用户名

password ; 要连接数据库的密码

  • 定义要执行的SQL语句
//4、定义sql语句
String  sql = "insert into student(stu_name,age,sex) values('小明',18,'男')";

定义一个字符串用来表示要执行的SQL语句

  • 获取Statement对象
//5、获取执行SQL语句的Statement对象
Statement  stmt = con.createStatement();

Statement对象是用来执行SQL语句的对象,在API当中封装了3类执行不同的SQL的方法,分别是:

1、boolean execute(String sql); 可以执行任意的SQL语句,返回值boolean,使用的不多,了解即可

2、int executeUpdate(String sql); 执行DML(insert、update、delete)语句、DDL(create、alter、drop)语句。这里的返回值int表示受影响的行数,可以通过判断这个行数来判断SQL是否执行成功。如果大于0,表示成功,反之表示失败。

3、ResultSet executeQuery(String sql); 执行DQL(select)语句

  • 调用方法执行SQL语句
//6、调用方法执行SQL语句
//如果是增、删、改操作调用executeUpdate方法,返回int值
int count = stmt.executeUpdate(sql);  
//如果是查询调用executeQuery()方法,返回ResultSet查询结果集
ResultSet  rs = stmt.executeQuery(sql);
  • 处理结果集

如果是增、删、改操作,因为返回的是int值,所以只需要判断返回的值是否大于0即可知道是否执行成功

//判断count的值是否大于0,如果大于0 表示成功,反之失败
if (count > 0){
      System.out.println("当前操作执行成功");
}else{
      System.out.println("当前操作执行失败");
}

如果是查询操作,返回的是ResultSet查询结果集,它的作用是用来封装查询结果的。为了能够将查询的结果遍历出来,在API当中提供了一些方法供我们使用,具体如下:

1、boolean next(); 将光标从当前的位置向后移动一行,光标最初的位置位于第一行结果之前,第一次调用该方法时第一行成为当前行,第二次调用方法时第二行成为当前行,依次类推。如果光标所指向的行有数据则返回true,否则返回false

2、getXXX(参数) ; 该方法是用来获取数据的。

XXX表示数据类型,例如如果数据库中的类型是int,就可以使用getInt(),如果数据库中的类型字符串,就可以使用getString()

参数有两种形式,一种为int类型,代表列的编号,从1开始,通过编号可以获取指定列的数据;另一种为String类型,代表列的名称,通过传递指定的列的名称获取想要的数据

//遍历ResultSet
while(rs.next()){
       int  stuId = rs.getInt("stu_id");
       String  stuName = rs.getString("stu_name");
       int  age = rs.getInt("age");
       String  sex = rs.getString("sex");
}
  • 释放资源

关闭Statement对象和Connection对象,关闭的顺序是先Statement,后Connection

//释放资源
stmt.close(); //关闭Statement
con.close();//关闭Connection

至此,JDBC的入门级的操作步骤已经完毕,下方为全部代码

JDBC保姆级入门分享

5、补充

  1. SQL注入
JDBC保姆级入门分享

说的简单一些就是通过在追加并修改SQL的形式非法登录到web程序中,这就是SQL注入。

例如在登录操作时写的SQL语句为:

select  *   from  student  where  username = "admin" and password = "123";

如果账号和密码不正确是不允许登录的,但是如果在语句的后边添加 “or 1 = 1”,此时SQL语句变成了

select  *   from  student  where  username = "admin" and password = "123" or 1 = 1;

因为使用的or,所以前后两个表达式有一个成立就可以,而1 = 1是恒成立的,所以就达到了SQL注入的目的。

2、PreparedStatement对象

PreparedStatement对象也是用来执行SQL语句的对象,只不过它是用来执行预编译的SQL语句。它的好处在于可以防止SQL注入,并且它的效率要比Statement对象要高,所以后期都使用PreparedStatement对象。

PreparedStatement对象使用 ? 作为占位符替代SQL中的参数条件,在使用的时候给 ? 赋值即可。

JDBC保姆级入门分享

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/5319.html

(0)
上一篇 2022-12-13 21:20
下一篇 2022-12-13 21:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信