当前位置: 首页 > news >正文

2.20jdbc

一.数据库编程的必备条件

  • 编程语言:java c c++ Python

  • 数据库 Oracle,MySQL,SQL Server

  • 数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包:MySQL提供了Java的驱动包

mysql=connector-java,需要就Java操作MySQL需要该驱动包

二.Java的数据库编程

JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是

Java中的数据库连接规范。这个API由 java.sql.,javax.sql. 包中的一些类和接口组成,它为Java

开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

三.jdbc工作原理

JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问API的一种高级抽象,它主要包

含一些通用的接口类。

JDBC优势:

  • Java语言访问数据库操作完全面向抽象接口编程

  • 开发数据库应用不用限定在特定数据库厂商的API

  • 程序的可移植性大大增强

MySQL是一个-服务器结构的程序

四.JDBC编程

1.创建项目

2.引入依赖

JDBC编程需要用到MySQL的驱动包

驱动包就是将mysql本身的API给转化成jdbc风格的

1)下载驱动包

去maven中央仓库去下载

https://mvnrepository.com/

2)导入到项目中

a)创建个目录,随便取名字

b)把刚才下载的jar文件拷贝到刚才的目录

c)右键刚刚的目录,有一个选项,佳作add as library

3)编写代码

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

父类引用指向子类实例

URL:Uniform Resource Locator

唯一资源定位符

2.建立连接

3操作数据库(插入)-构造语句

4.执行sql

5.释放资源

释放资源的时候先释放statement,再释放connection

先创建的后释放

4)总结

(42条消息) 如何查看MySQL的端口号?_安西宁的博客-CSDN博客_mysql8 查看端口

五.灵活处理插入删除数据

0.以前的方法

1.使用户输入

2.将id和name替换到insert语句对应的位置上

方法1,用字符串的拼接

方法2:替代写法

3.进行替换操作

4.打印拼接好的sql

六.注意事项

1.无法用idea连接

2.连接池

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 JDBC {public static void main(String[] args) throws SQLException {Scanner scanner = new Scanner(System.in);// 1. 创建好数据源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("2222");// 2. 让代码和数据库服务器建立连接~~ 相当于到达了菜鸟驿站Connection connection = dataSource.getConnection();// 2.5 让用户通过控制台输入一下待插入的数据.System.out.println("请输入学号: ");int id = scanner.nextInt();System.out.println("请输入姓名: ");String name = scanner.next();// 3. 操作数据库. 以插入数据为例.//    关键所在就是构造一个 SQL 语句~//    在 JDBC 中构造的 SQL, 不必带上 ;//    ; 只是在命令行中用来区分不同的语句. 现在是直接在代码中操作~~String sql = "insert into student values(?, ?)";// 此处光是一个 String 类型的 sql 还不行, 需要把这个 String 包装成一个 "语句对象"PreparedStatement statement = connection.prepareStatement(sql);// 进行替换操作.statement.setInt(1, id);statement.setString(2, name);System.out.println("statement: " + statement);// 4. 执行 SQL , 相当于扫码取件//    SQL 里面如果是 insert, update, delete, 都使用 executeUpdate 方法.//    SQL 里面如果是 select, 则使用 executeQuery 方法.//    返回值就表示这个操作, 影响到了 几行. 就相当于在控制台里输入 sql 之后, 得到的数字~int ret = statement.executeUpdate();System.out.println(ret);// 5. 此时 SQL 已经执行完毕. 然后还需要释放资源.statement.close();connection.close();}
}

七 .查找操作

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class JDBCSelect {public static void main(String[] args) throws SQLException {// 查找数据库中的记录// 这个查找和前面的操作就不太一样了~~ 多了一个步骤, 要遍历结果集合~// 1. 创建数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java104?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("2222");// 2. 和数据库服务器建立连接Connection connection = dataSource.getConnection();// 3. (此处不输入条件了, 直接查找所有记录)// 4. 构造 SQLString sql = "select * from student";PreparedStatement statement = connection.prepareStatement(sql);// 5. 执行 SQL.//    此处要使用的是 executeQuery.//    executeUpdate 只能返回一个 int.//    executeQuery 返回的是一个 ResultSet 对象. 可以把这个对象视为是一个 "临时表"ResultSet resultSet = statement.executeQuery();// 6. 遍历临时表, 拿到里面的数据.//    resultSet 简单的当成一个类似于 "迭代器" 这样的东西来看待~//    next 如果没有到达末尾, 就是返回 true, 要继续循环.//    next 如果到达末尾, 就返回 false, 结束循环.while (resultSet.next()) {// 在这里就可以取这一行的数据了.// 通过 ResultSet 里面的 getXXX 方法, 来获取到这里指定的列.// 取 id, id 是整数, getIntint id = resultSet.getInt("id");// 取 name, name 是 String, getStringString name = resultSet.getString("name");System.out.println(id + ": " + name);}// 7. 关闭连接, 释放资源resultSet.close();statement.close();connection.close();}
}

八.workbench

http://www.lryc.cn/news/14243.html

相关文章:

  • 【代码随想录训练营】【Day19休息】【Day20】第六章|二叉树|654.最大二叉树|617.合并二叉树|700.二叉搜索树中的搜索|98.验证二叉搜索树
  • 华为云计算之容灾技术
  • React系列之Redux
  • 最简单得方法解决TCP分包粘包问题
  • 免费使用通配符域名证书
  • 0基础成功转行Python自动化测试工程师,年薪30W+,经验总结都在这(建议收藏)
  • MyBaits
  • kubeadm的部署、Dashboard UI以及连接私有仓库
  • 刷题记录:牛客NC20325[SDOI2009]HH的项链
  • 【REACT-路由v6】
  • 【离散数学】3. 代数系统
  • 深度学习常用的优化器整理
  • Java 内部类
  • 【FAQ】集成分析服务的常见问题及解决方案
  • 11.注意力机制
  • 45岁当打之年再创业,剑指中国版ChatGPT,这位美团联合创始人能否圆梦?
  • 数据结构——第二章 线性表(2)——链式存储结构
  • 【更新】囚生CYの备忘录(20230216~)
  • 分布式事务几种方案
  • Eclipse各版本安装Tomcat插件全攻略
  • 志趣相投的人总会相遇——社科院与杜兰大学金融管理硕士项目
  • 算法专题训练营
  • 让ChatGPT生成以自己为主角的短篇小说
  • c++提高篇——vector容器
  • 使用BP神经网络诊断恶性乳腺癌(Matlab代码实现)
  • # Rust Web入门(二):Actix
  • jvm之String
  • WebRTC系列-工具系列之ByteBuffer,BitBuffer及相关类
  • Spring中bean的生命周期(通俗易懂)
  • 雷达编程实战之恒虚警率(CFAR)检测