您现在的位置是:首页 > 电脑 > 

MySQL数据库(Java的数据库编程:JDBC)

2025-07-19 06:30:55
  作者:渴望力量的土狗 博客主页:渴望力量的土狗的博客主页 专栏:MySQL数据库 目录 什么是数据库编程: 什么是JDBC?  JDBC工作原理:  JDBC的使用及相关操作:  JDBC开发案例:  JDBC常用接口和类:  数据库连接Conne

 

作者:渴望力量的土狗

博客主页:渴望力量的土狗的博客主页

专栏:MySQL数据库

目录

什么是数据库编程:

什么是JDBC? 

JDBC工作原理: 

JDBC的使用及相关操作: 

JDBC开发案例: 

JDBC常用接口和类: 

数据库连接Connection 

Statement对象

ResultSet对象  


什么是数据库编程:

数据库编程要有个基本条件:

1、编程语言,如Java,c/c,Python等等

2、数据库 如MySQL,Oracle,SQL Server等等

、数据库驱动包,不同的数据库,对应不同的编程语言提供了不同的数据库驱动包,如:MySQL提供了Java的驱动包mysql-connector-java,需要基于Java操作MySQL即需要该驱动包

什么是JDBC? 

JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问. 

说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。 

JDBC工作原理: 

JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包含一些通用的接口类
JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet!

 

主要是通过jdbc的接口来进行的,利用接口,然后驱动数据库进行相关的操作。 

JDBC的使用及相关操作: 

1、首先我们要准备好数据库的驱动包,mysql-connector-java-5.1.47.jar也就是这个东西,
 具体下载请访问MySQL:https:///downloads/

2、打开IDE,创建java文件

、创建一个Directory,命名为lib,并把下载好的jar包复制到该Directory

4、把创建好的lib右键,然后Add as library 

 

 

出现这几个就是导入成功了,版本不一样可能里面的文件也会有差异。

5、创建正常的Java文件即可

 

JDBC开发案例: 

我们在使用JDBC的时候要经过以下几个步骤:

1、先去创建 DataSource 数据源. 描述了 mysql 数据库在哪

2、和数据库建立连接

、构造 SQL 语句

4、执行 SQL. 针对 增, 删, 改, 使用 executeUpdate 来执行,针对 查, 使用 executeQuery 来执行. 

5、断开连接, 释放资源 

接下来是具体的操作代码:

import jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class JDBCInsertDemo {

    public static void main(String[] args) throws SQLException {
        //1、先去创建 DataSource 数据源. 描述了 mysql 数据库在哪
        DataSource dataSource=new MysqlDataSource();

       ((MysqlDataSource)dataSource).setURL(jdbc:mysql://127.0.0.1:06/java106?characterEncoding=utf8&useSSL=false);
       ((MysqlDataSource)dataSource).setUser(root);
       ((MysqlDataSource)dataSource).setPassword(168168);
        //2、和数据库建立连接
        Connection connection=dataSource.getConnection();
        // 通过控制台, 来输入用户的信息
        Scanner scan=new Scanner(System.in);
        println(学号:);
        int id=();
        println(姓名:);
        String name=();
        //、构造 SQL 语句
        String sql=insert into student values(?,?);
        // jdbc 中还需要搭配一个特定的对象, 来描述这里的 sql 的情况
        PreparedStatement statement= connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        println(sql:   statement);

        //4、执行 SQL. 针对 增, 删, 改, 使用 executeUpdate 来执行,针对 查, 使用 executeQuery 来执行.
        int ret=();
        println(ret=ret);
        //5、断开连接, 释放资源
        ();
        ();

    }

}

我们在IDE中进行了插入一个学生的数据,现在我们看看学生表中是否出现了该数据:

是的,出现了,所以我们的插入是成功的。 

首先有几个需要明确的点:

1、我们在寻数据库的位置是用到的DataSource是一个interface,需要用一MySQLDataSource来实现这个接口。然后是需要用到强制转换为MySQLDataSource类型,使用其中的set方法来进行设置URL,User,Password,注意这些数据一定要和原来的数据库可以对应上

2、设置URl的时候要使用本地回环ip地址:也就是下面这个

jdbc:mysql://127.0.0.1:06/java106?characterEncoding=utf8&useSSL=false

、建立连接的时候使用Collection接口 ,通过DataSource(数据源)对象获取连接

4、构造sql语句的时候通常使用占位符(?),其中的?所在的位置是从1开始的。使用占位符还有的好处是可读性高,而且不容易被黑客攻击。构造的sql语句需要使用Statement对象来把语句发送到数据库。 

像下面这种sql语句就容易受到攻击:

String sql = insert into student values( id , 	  name  	);

可以利用语句特点,把字符串类型的数据改为带;的数据,然后后面再跟个drop操作,你的表就直接寄了!!所以这样写很危险!!!一定要注意!

5、executeQuery() 方法执行后返回单个结果集的,通常用于select语句executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于update、insert、delete语句
 

6、最后别忘了释放资源!!资源占据也是非常影响效率的,其中包括有CPU,IO,硬盘,网络,带宽等等资源,要进行释放。

 

JDBC常用接口和类: 

数据库连接Connection 

Connection接口实现类由数据库提供,获取Connection对象通常有两种方式:
一种是通过DriverManager(驱动管理类)的静态方法获取

// 加载JDBC驱动程序
Class.forame(jdbc.Driver);
// 创建数据库连接
Connection connection = DriverManager.getConnection(url);

 一种是通过DataSource(数据源)对象获取。实际应用中会使用DataSource对象

       DataSource dataSource=new MysqlDataSource();

       ((MysqlDataSource)dataSource).setURL(jdbc:mysql://127.0.0.1:06/java106?characterEncoding=utf8&useSSL=false);
       ((MysqlDataSource)dataSource).setUser(root);
       ((MysqlDataSource)dataSource).setPassword(168168);
        //2、和数据库建立连接
        Connection connection=dataSource.getConnection();

 两种方式的区别:

1. DriverManager类来获取的Connection连接,是无法重复利用的,每次使用完以后释放资源
时,通过()都是关闭物理连接。
2. DataSource提供连接池的支持。连接池在初始化时将创建一定数量的数据库连接,这些连接
是可以复用的,每次使用完数据库连接,释放资源调用()都是将
Conncetion连接对象回收。

Statement对象

Statement对象主要是将SQL语句发送到数据库中。JDBC API中主要提供了三种Statement对象
1、Statement 用于执行不带参数的简单SQL语句

2、PreparedStatement 用于执行带或者不带参数的SQL语句,执行速度比Statement快,SQL会预编译在数据库系统

、CallableStatement 用于执行数据库存储过程的调用

最常用的是PreparedStatement对象,以下对其的总结:

1、SQL预编译

2、性能比Statement高

、参数化SQL查询

4、占位符不能使用多值

5、占位符?下标从1开始

6、阻止常见SQL注入攻击

掌握两种执行SQL的方法:
executeQuery() 方法执行后返回单个结果集的,通常用于select语句
executeUpdate()方法返回值是一个整数,指示受影响的行数,通常用于update、insert、delete语句


 

ResultSet对象  

我们在进行查询的时候,查询的结果是一个集合。

ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法提供了对这些行中数据的访问。
ResultSet里的数据一行一行排列,每行有多个字段,并且有一个记录指针,指针所指的数据行叫做当前数据行,我们只能来操作当前的数据行。我们如果想要取得某一条记录,就要使用ResultSet的next()方法 ,如果我们想要得到ResultSet里的所有记录,就应该使用while循环

查询案例:


import jdbc.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCSelectDemo {
    public static void main(String[] args) throws SQLException {
        //查数据库位置
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL(jdbc:mysql://127.0.0.1:06/java106?characterEncoding=utf8&useSSL=false);
        ((MysqlDataSource)dataSource).setUser(root);
        ((MysqlDataSource)dataSource).setPassword(168168);
        //建立连接
        Connection connection = dataSource.getConnection();
        //构造sql语句
        String sql = select * from student where id = 1;
        PreparedStatement statement = connection.prepareStatement(sql);
        // 结果集合
        ResultSet resultSet = ();
        //执行SQL
        while (()) {
            // next 相当于移动一下光标, 光标指向下一行. 然后移动到结尾, 就返回 false
            // 使用 getXX 方法获取到每一列.
            // 这里的参数, 就是数据库表的列名.
            int id = resultSet.getInt(id);
            String name = resultSet.getString(name);
            println(id  :   name);
        }
        // 释放资源
        ();
        ();
        ();
    }
}


和我们在cmd中的结果一致!查询成功!

到这里就结束了,后续还会慢慢完善哈,感谢支持! 

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/diannao/551531.html

相关标签:无
上传时间: 2023-06-29 06:41:45
留言与评论(共有 9 条评论)
本站网友 美白排行榜
20分钟前 发表
使用 executeQuery 来执行.  5
本站网友 林蓉
28分钟前 发表
创建一个Directory,命名为lib,并把下载好的jar包复制到该Directory 4
本站网友 艺人美场
8分钟前 发表
释放资源  接下来是具体的操作代码: import jdbc.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class JDBCInsertDemo { public static void main(String[] args) throws SQLException { //1
本站网友 明星医师
26分钟前 发表
Statement对象 Statement对象主要是将SQL语句发送到数据库中
本站网友 阿尔法狗
29分钟前 发表
//127.0.0.1
本站网友 羊角参
1分钟前 发表
//127.0.0.1
本站网友 朝阳大悦城电影院
11分钟前 发表
06/java106?characterEncoding=utf8&useSSL=false); ((MysqlDataSource)dataSource).setUser(root); ((MysqlDataSource)dataSource).setPassword(168168); //2
本站网友 hib
15分钟前 发表
原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句