MySQL详解进行JDBC编程与增删改查方法


Posted in MySQL onJune 16, 2022

Java的数据库编程JDBC

概念

  • JDBC是一种用于执行sql语句的Java API,他是java中的数据库连接规范,这个API由一些接口和类组成。它为java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问
  • 本质是通过代码自己实现一个MySQL客户端,通过网络和服务器进行数据的交互,客户端不能凭空出现,所以数据库提供了一组API方便我们实现
  • 数据库的种类有很多,不同的数据库提供的API不太一样,所以java为了解决这一问题提供了JDBC,java自带的一种数据库操作API,这种API覆盖所有数据库操作的操作方式
  • 本质上是java自身完成了JDBC API和数据库API之间进行转换

MySQL详解进行JDBC编程与增删改查方法

使用步骤

创建DataSource对象,这个对象就描述了数据库服务器在哪

DataSource dataSource = new MysqlDataSource();
		//设置数据库所在的地址
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/lmp?characterEncoding=utf8&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource)dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("woshizhu123");

通过Connection连接数据库(输入密码连接成功)

//import java.sql.Connection;
 Connection connection  = dataSource.getConnection();

拼接sql语句(写入sql语句)

String sql = "insert into student values(1,'张三')";

将sql语句包装成对象

PreparedStatement statement = connection.prepareStatement(sql);

执行sql语句(按下回车执行sql语句)

int ret = statement.executeUpdate();
  • 执行 update delete insert 使用 executeUpdate() 方法
  • 执行 select 使用 executeQuery() 方法
  • 使用 executeQuery() 方法 会返回一个resultSet集合, 包含查找到的数据, 初始情况下resultSet不指向任一行记录, 使用next,让他指向第一条记录, 再使用next指向下一条记录

释放资源

statement.close();
 connection.close();

利用JDBC实现增加(insert)

public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf-8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("woshizhu123");
        Connection connection = dataSource.getConnection();
        System.out.println("输入id");
        int id = scanner.nextInt();
        System.out.println("输入名字");
        String name = scanner.next();
        String sql = "insert into student values(?,?)";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);
        statement.setString(2,name);
        int ret = statement.executeUpdate();
        if(ret == 1){
            System.out.println("插入成功");
        }else {
            System.out.println("插入失败");
        }
        statement.close();
        connection.close();
    }
}

利用JDBC实现删除(delete)

public class TestJDBCDelete
{
    public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("woshizhu123");
        Connection connection = dataSource.getConnection();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要删除的id");
        int id = scanner.nextInt();
        String sql = "delete from student where id = ?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setInt(1,id);
        int ret = preparedStatement.executeUpdate();
        System.out.println(ret);
        preparedStatement.close();
        connection.close();
    }

利用JDBC实现修改(update)

public class TestJDBCUpdate {
    public static void main(String[] args) throws SQLException {
        DataSource dataSource = new MysqlDataSource();
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("woshizhu123");
        Connection connection = dataSource.getConnection();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要修改的学生id");
        int id = scanner.nextInt();
        System.out.println("请输入要修改的学生姓名");
        String name = scanner.next();
        String sql = "update student set name = ? where id = ?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setString(1,name);
        statement.setInt(2,id);
        int ret = statement.executeUpdate();
        System.out.println(ret);
        statement.close();
        connection.close();
    }
}

利用JDBC实现查找(select)

public static void testJDBCSelect() throws SQLException {
        //1创建DataSource对象
        DataSource dataSource = new MysqlDataSource();
        //2连接数据库
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_5_31?characterEncoding=utf-8&useSSL=true");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("listen");
        Connection connection = dataSource.getConnection();
        //3拼接sql
        String sql = "select * from student";
        PreparedStatement statement = connection.prepareStatement(sql);
        //4执行sql
        ResultSet resultSet = statement.executeQuery();
        //5遍历得到的集合
        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String name = resultSet.getString("name");
            int classId = resultSet.getInt("classId");
            System.out.println("id " + id + " name " + name + " classId " + classId);
        }
        //6关闭资源
        resultSet.close();
        statement.close();
        connection.close();
    }

到此这篇关于MySQL详解进行JDBC编程与增删改查方法的文章就介绍到这了,更多相关MySQL JDBC编程内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

MySQL 相关文章推荐
MySQL表的增删改查(基础)
Apr 05 MySQL
MySQL之高可用集群部署及故障切换实现
Apr 22 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
MySQL中出现乱码问题的终极解决宝典
May 26 MySQL
MySql开发之自动同步表结构
May 28 MySQL
浅谈MySQL next-key lock 加锁范围
Jun 07 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
MySQL的全局锁和表级锁的具体使用
Aug 23 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
MySQL高级进阶sql语句总结大全
Mar 16 MySQL
MySQL中一条SQL查询语句是如何执行的
Apr 08 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 #MySQL
MySQL聚簇索引和非聚簇索引的区别详情
关于mysql中string和number的转换问题
Jun 14 #MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 #MySQL
手把手带你彻底卸载MySQL数据库
MYSQL中文乱码问题的解决方案
Jun 14 #MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 #MySQL
You might like
php微信支付接口开发程序
2016/08/02 PHP
PHP反射API示例分享
2016/10/08 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
用 JSON 处理缓存
2007/04/27 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
jQuery中hover与mouseover和mouseout的区别分析
2015/12/24 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
Python修改MP3文件的方法
2015/06/15 Python
python中实现k-means聚类算法详解
2017/11/11 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
python 内置模块详解
2019/01/01 Python
python 实现return返回多个值
2019/11/19 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
市场部专员岗位职责
2013/11/30 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
中医学专业自荐信范文
2014/04/01 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
劳资员岗位职责
2015/02/13 职场文书
公司禁烟通知
2015/04/23 职场文书
中学推普周活动总结
2015/05/07 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python