本篇文章给大家带来了关于mysql的相关知识,其中主要整理了JDBC编程知识点的相关问题,JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由 ...
本篇文章给大家带来了关于mysql的相关知识,其中主要整理了JDBC编程知识点的相关问题,JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成,下面一起来看一下,希望对大家有帮助。 推荐学习:mysql视频教程 本篇文章将介绍JDBC编程,JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 1.JDBC前置工作1.1准备好MySQL驱动包MySQL的jdbc驱动包我们可以去官网下载,我们也可以maven中央仓库下载,这个maven中央仓库是什么呢?你可以理解为我们手机中的“应用商店”软件,它的作用和应用商店的作用是差不多的,只不过手机应用商店里面是手机软件,而maven中央仓库里面有许多的API以及依赖包。 现在MySQL已经被Oracle收购了,Oracle的“吃相”有点难看,从官网找可以找到,但是我感觉maven中央仓库更好找一点,所以我们到maven中央仓库下载jdbc驱动包。 网址:maven中央仓库 第一步,点进网址进入maven中央仓库。 第二步,搜索MySQL,选择如下图那一个。 我的MySQL是5版本所以我选择大版本为5的驱动包。 1.2创建项目使用编译器创建一个项目,项目创建好后,按照下面的步骤操作: 第一步,创建一个目录,名字随便起,不妨叫做 第二步,将下载好的驱动包拷贝到该目录。 第三步,设置选项,右键刚才创建并已经将驱动包拷贝的目录,找到As a Lib… 2.JDBC编程步骤2.1创建数据源DataSource第一步,创建 DataSource dataSource = new MysqlDataSource(); 其中 第二步,设置数据库的“位置”(URL),登录数据库的账户名和密码。 //设置数据库所在地址 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jdbctest/characterEncoding=utf8&useSSL=false"); //设置登录数据库的账户名 ((MysqlDataSource)dataSource).setUser("root"); //设置登录数据库的密码 ((MysqlDataSource)dataSource).setPassword("123456");
具体含义自主对照: 2.2连接数据库第三步,和服务器建立连接,创建好数据源 Connection connection = dataSource.getConnection(); 2.3构造并执行sql语句(插入操作为例)第四步,构造 我们先以插入操作为例。 //操作数据库 关键在于构造sql语句 //jdbc 构造的sql语句不需要带上; String sql = "insert into student values(1, '张三')"; //将sql字符串包装成一个语句对象,表示待执行的sql的对象 PreparedStatement statement = connection.prepareStatement(sql); //执行sql //如果待执行的sql语句操作是insert, update, delete,则使用executeUpdate方法执行,返回值为影响数据的行数 //如果待执行的sql语句操作是select,则使用executeQuery方法执行 int ret = statement.executeUpdate(); 其中,如果待执行的sql语句操作是insert, update, delete,则使用executeUpdate方法执行,返回值为影响数据的行数,如果待执行的sql语句操作是select,则使用executeQuery方法执行,返回值是一个 2.4及时释放资源第五步,释放资源,我们执行完毕sql语句后需要及时地将资源释放,在JDBC编程中,最常见需要释放的类或接口有三个,分别是 //此时sql语句已经执行完毕了,需要释放资源statement.close();connection.close(); 使用jdbc编程进行插入操作全部代码: import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.Scanner;public class TestJdbc { public static void main(String[] args) throws SQLException { DataSource dataSource = new MysqlDataSource(); //设置数据库所在地址 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jdbctest?characterEncoding=utf8&useSSL=false"); //设置登录数据库的账户名 ((MysqlDataSource)dataSource).setUser("root"); //设置登录数据库的密码 ((MysqlDataSource)dataSource).setPassword("123456"); //建立连接 Connection connection = dataSource.getConnection(); //操作数据库 关键在于构造sql语句 //jdbc 构造的sql语句不需要带上; String sql = "insert into student values(1, '张三')"; //将sql字符串包装成一个语句对象,表示待执行的sql的对象 PreparedStatement statement = connection.prepareStatement(sql); //执行sql //如果待执行的sql语句操作是insert, update, delete,则使用executeUpdate方法执行,返回值为影响数据的行数 //如果待执行的sql语句操作是select,则使用executeQuery方法执行 int ret = statement.executeUpdate(); //此时sql语句已经执行完毕了,需要释放资源 statement.close(); connection.close(); }} 运行结果,我们通过查询数据库的表的结果来进行观察: mysql> create database jdbctest;Query OK, 1 row affected (0.01 sec)mysql> use jdbctest;Database changed mysql> create table student(id int, name varchar(20));Query OK, 0 rows affected (0.02 sec)mysql> show tables;+--------------------+| Tables_in_jdbctest |+--------------------+| student |+--------------------+1 row in set (0.00 sec)-- 执行jdbc代码后查询mysql> select * from student;+------+--------+| id | name |+------+--------+| 1 | 张三 |+------+--------+1 row in set (0.00 sec) 程序运行结果,表示1行受到了影响。 2.5不要写死的代码(以插入为例)我们发现我们的sql语句是完完全全写死的,这一点不好,我们可以使用输入的操作让用户输入信息进行插入,那就需要使用到 我们得到用户输入的信息后,我们需要对信息进行整合,最容易想到的方式就是字符串拼接,但是这么做有如下的缺点,一是容易写错,特别是单双引号比较多的情况下,二是不安全,黑客可以使用sql注入的方式来修改数据库。 所以更好的方法就是把sql字符串中待输入的信息使用 这个系列的方法,第一个参数表示sql待执行对象中第多少个 //操作数据库 关键在于构造sql语句 //jdbc 构造的sql语句不需要带上; String sql = "insert into student values(?, ?)"; //将sql字符串包装成一个语句对象,表示待执行的sql的对象 PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, id); statement.setString(2, name); 完整代码:jdbc插入操作源代码 运行结果: mysql> select * from student;+------+--------+| id | name |+------+--------+| 1 | 张三 || 2 | 李四 |+------+--------+2 rows in set (0.00 sec) 2.6JDBC删除,更新操作在jdbc编程中,删除操作和更新操作,它的步骤与插入操作是一模一样的,只不过就是构造的 删除操作关键代码: //用户输入 System.out.println("请输入需要删除的学号:"); int id = sc.nextInt(); //操作数据库 关键在于构造sql语句 //jdbc 构造的sql语句不需要带上; String sql = "delete from student where id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, id); System.out.println("statement" + statement); jdbc删除操作完整代码:源代码地址 程序运行结果: 数据库查询结果: mysql> select * from student;+------+--------+| id | name |+------+--------+| 1 | 张三 |+------+--------+1 row in set (0.00 sec) 更新操作关键代码: //用户输入 需要修改的id 与修改后的姓名 System.out.println("请输入需要修改的学号:"); int id = sc.nextInt(); sc.nextLine(); System.out.println("请输入修改后的姓名:"); String afterName = sc.nextLine(); //操作数据库 关键在于构造sql语句 //jdbc 构造的sql语句不需要带上; String sql = "update student set name = ? where id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, afterName); statement.setInt(2, id); System.out.println("statement" + statement); jdbc更新操作完整代码:源代码地址 程序运行结果: 数据库查询结果: mysql> select * from student;+------+--------+| id | name |+------+--------+| 1 | 王五 |+------+--------+1 row in set (0.00 sec) 2.7JDBC查询操作jdbc的查询操作与插入删除更新操作有一点点不同,执行查询sql语句的时候是调用 关键代码: //操作数据库 关键在于构造sql语句 //jdbc 构造的sql语句不需要带上; String sql = "select * from student"; PreparedStatement statement = connection.prepareStatement(sql); //执行sql 查询操作返回的不是int 而是一个临时表 使用ResultSet对象表示这个临时表 ResultSet ret = statement.executeQuery(); //便利结果集合 //预期结果格式// +------+--------+// | id | name |// +------+--------+// | 1 | 王五 |// +------+--------+ while (ret.next()) { int id = ret.getInt("id"); String name = ret.getString("name"); System.out.println("id:" + id + ", name:" + name); } //关闭资源 ret.close(); statement.close(); connection.close(); jdbc查询操作完代码:源代码地址 程序运行结果: 推荐学习:mysql视频教程 以上就是MySQL数据库JDBC编程知识点总结的详细内容,更多请关注模板之家(www.mb5.com.cn)其它相关文章! |