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

Java全栈学习笔记34

# JDBC

java database connection  Java 数据库连接技术

## JDBC 驱动程序

如果需要通过jdbc技术连接关系型数据库,就需要为jdbc提供一个该数据库的驱动。

驱动程序由对应的数据库厂商提供。

mysql提供了针对于各种语言的驱动程序。去官网下载和java相关的驱动即可

## JDBC连接的步骤

1. 导入mysql的驱动.jar  

2. 注册驱动,在jdbc4.0 之后变为可选,因为下载的驱动中包含了对驱动类的配置

   Class.forName("com.mysql.cj.jdbc.Driver")

3. 获取连接

   DriverManager 类 管理驱动,并可以通过方法从驱动中获取连接

   getConnection()

     jdbcUrl:数据库的路径

     user:用户名

     password :密码

   String jdbcUrl = "jdbc:mysql://localhost:3306/empdb?useSSL=true&serverTimezone=Asia/Shanghai&charset=UTF-8";

   String username = "root";

   String password = "admin"

   Connection conn = DriverManager.getConnection(jdbcUrl,username,password)

4. 执行sql语句

   String sql = "select * from emp";

   Statement st = conn.createStatement();

5. 获取结果集

   java

   ResultSet rs = st.executeQuery(sql);

   while(rs.next()) {

    System.out.println(rs.getString("ename"));

   }

6. 关闭结果集

  rs.close()

7. 关闭语句

  st.close()

8. 关闭连接

   conn.close()

## Statement

执行sql语句

  String sql = "select * from emp";

  Statement st = conn.createStatement();

  ResultSet rs = st.executeQuery(sql);

  只执行sql.不做sql处理。很容易造成sql注入攻击。所以一般使用PreparedStatement

## PreparedStatement

sql的预编译。查看sql是否合理。后续通过该对象的方法进行参数设置。

需要使用`?`这种占位符的方式,表明参数的位置。和类型无关

设置参数时的参数位置从左往右,从1开始依次增加

String sql = "select * from emp where job = ?";

PreparedStatement pst = conn.prepareStatement(sql);

pst.setString(位置,值)

setString 设置字符串参数

setInt()

setDouble

...

getMoreResults(); 执行存储过程时,获取多个结果集

## CallableStatment

执行的存储过程

获取多个结果集

getMoreResults()  获取多个结果集。

if(pst.getMoreResults()) {

​    rs = pst.getResultSet();

​    while(rs.next()) {

​    System.**out**.println(rs.getString(2));

​  }

}    

## ResultSet

getMetaData() 返回对象 ResultSetMetaData 包含表的中信息

  getColumnCount() 返回结果集中列的数量

  getColumnName(int) 返回指定索引列的名称。索引从1开始,这个名称是真实名称

  getColumnLabel(int) 返回指定索引的结果集中的列名。(如果是别名,则列别名)

getInt/getString()....系列方法

  通过列索引获取和指定列的值

  通过列名称获取指定列的值

## java 项目的分类

java项目---- 打包 jar包

网站项目---- war包


文章转载自:

http://EefEIhm2.rkwwy.cn
http://S7Ypaedr.rkwwy.cn
http://ipScSxUV.rkwwy.cn
http://6SzakUvj.rkwwy.cn
http://VQVgWNBe.rkwwy.cn
http://5D767zIO.rkwwy.cn
http://U0lx0SGt.rkwwy.cn
http://JUc6trGf.rkwwy.cn
http://shHt504m.rkwwy.cn
http://s8UWeX8m.rkwwy.cn
http://hHzhLQiT.rkwwy.cn
http://7C5wLbMU.rkwwy.cn
http://P4F5vmZb.rkwwy.cn
http://mJwngLjG.rkwwy.cn
http://4dPHYhvV.rkwwy.cn
http://4tNBZS9E.rkwwy.cn
http://3rt4Oc1F.rkwwy.cn
http://j3vgfHzl.rkwwy.cn
http://ToQwzA1c.rkwwy.cn
http://Xnpu8oMv.rkwwy.cn
http://sIsKIyhj.rkwwy.cn
http://50B3074p.rkwwy.cn
http://kvPIOExj.rkwwy.cn
http://w3HzbnBv.rkwwy.cn
http://hPwslLR0.rkwwy.cn
http://M34qq686.rkwwy.cn
http://HeHtCiZk.rkwwy.cn
http://XEaA5Sik.rkwwy.cn
http://wimvH6kn.rkwwy.cn
http://76xStoUy.rkwwy.cn
http://www.dtcms.com/a/378375.html

相关文章:

  • 进程控制(1)
  • 操作系统进程管理——同步与互斥的基本概念
  • 灰色关联分析笔记
  • CAD文件坐标系未知?用Bigemap Pro自动计算中央子午线,准确定位!
  • 项目管理核心八项(软件篇)
  • 创新驱动:医养照护与管理实训室建设方案构建
  • C++ 之 cli窗口交互程序测试DLL
  • openEuler系统远程管理方案:cpolar实现安全高效运维
  • Spring常用注解介绍
  • 《秋鳞小故事——编译器》
  • 【前端Vue】如何优雅地在vue中引入ace-editor编辑器
  • 架构深解:英伟达Rubin CPX如何通过专用预填充加速器与解耦架构重塑AI推理效率与成本
  • 线下小店悄然增长:两个关键模式与它们的运营启示
  • 开发安全利器:detect-secrets 敏感信息扫描工具实战指南
  • 中间件架构设计与实践:构建高性能分布式系统的核心基石
  • 错误于make.names(vnames, unique = TRUE): invalid multibyte string 9 使用 R 语言进行数据处理时
  • 前端基础标签
  • 深度学习基本模块:ConvTranspose2D 二维转置卷积层
  • 多模态数据治理新范式:衡石Agentic BI如何统一结构化与非结构化数据?
  • Gopeed下载器本地部署指南:cpolar实现远程任务管理
  • App 苹果 上架全流程解析 iOS 应用发布步骤、App Store 上架流程
  • unity UGUI 鼠标画线
  • ALBEF(Align Before Fuse)
  • redis 集群——redis cluster(去中心化)
  • k8s部署kafka三节点集群
  • 11.ImGui-加载字体和中文
  • 大模型推理革命
  • 项目-sqlite类的实现
  • 物联网领域中PHP框架的最佳选择有哪些?
  • ARM1.(ARM体系结构)