1.什么是JDBC

  • JDBC(Java DataBase Connectivity)java 数据库连接
  • 是JavaEE 平台下的技术规范
  • 定义了在Java 语言中连接数据,执行SQL 语句的标准
  • 可以为多种关系数据库提供统一访问

2.什么是数据库驱动程序

  • 数据库厂商对JDBC 规范的具体实现
  • 不同数据产品的数据库驱动名字有差异
  • 在程序中需要依赖数据库驱动来完成对数据库的操作

3.程序操作数据库流程

4.JDBC3.0 标准中常用接口与类

  1. Driver 接口
  • Driver 接口的作用是来定义数据库驱动对象应该具备的一些能力。比如与数据库建立接的方法的定义所有支持java 语言连接的数据库都实现了该接口,实现该接口的类我们称之为数据库驱动类。在程序中要连接数据库,必须先通过JDK 的反射机制加载数据库驱动类,将其实例化。不同的数据库驱动类的类名有区别。
  • 加载MySql驱动:Class.forName("com.mysql.jdbc.Driver");
  • 加载Oracle 驱动:Class.forName("oracle.jdbc.driver.OracleDriver");

2.DriverManager 类

DriverManager 通过实例化的数据库驱动对象,能够建立应用程序与数据库之间建立连接。并返回Connection 接口类型的数据库连接对象。

  • 常用方法
  • getConnection(String jdbcUrl, String user, String password) 该方法通过访问数据库的url、用户以及密码,返回对应的数据库的Connection 对象。

3.Connection 接口

Connection 与数据库的连接(会话)对象。我们可以通过该对象执行sql 语句并返回结果。

  • 连接MySql 数据库:
 onnection conn = DriverManager.getConnection("jdbc:mysql://host:port/database", "user","password");                                                                                    C

  • 连接Oracle 数据库:
 Connection  conn=DriverManager.getConnection("jdbc:oracle:thin:@host:port:database","user", "password");                                                                          

  • 连接SqlServer 数据库:
Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://host:port;DatabaseName=database", "user", "password");

(1)常用方法

  • createStatement():创建向数据库发送sql 的Statement 接口类型的对象。
  • preparedStatement(sql) :创建向数据库发送预编译sql 的PrepareSatement 接口类型的
  • prepareCall(sql):创建执行存储过程的CallableStatement 接口类型的对象。
  • setAutoCommit(boolean autoCommit):设置事务是否自动提交。
  • commit() :在链接上提交事务。
  • rollback() :在此链接上回滚事务。

4.Statement 接口

用于执行静态SQL 语句并返回它所生成结果的对象。由createStatement 创建,用于发送简单的SQL 语句(不支持动态绑定)

常用方法:

  • execute(String sql):执行参数中的SQL,返回是否有结果集。
  • executeQuery(String sql):运行select 语句,返回ResultSet 结果集。
  • executeUpdate(String sql):运行insert/update/delete 操作,返回更新的行数。
  • addBatch(String sql) :把多条sql 语句放到一个批处理中。
  • executeBatch():向数据库发送一批sql 语句执行。

5 PreparedStatement 接口

继承自Statement 接口,由preparedStatement 创建,用于发送含有一个或多个参数的SQL语句。PreparedStatement 对象比Statement 对象的效率更高,并且可以防止SQL 注入,所以我们一般都使用PreparedStatement

常用方法:

  • addBatch()把当前sql 语句加入到一个批处理中。
  • execute() 执行当前SQL,返回个boolean 值
  • executeUpdate()运行insert/update/delete 操作,返回更新的行数。
  • executeQuery() 执行当前的查询,返回一个结果集对象
  • setDate(int parameterIndex, Date x)向当前SQL 语句中的指定位置绑定一个java.sql.Date值。
  • setDouble(int parameterIndex, double x)向当前SQL 语句中的指定位置绑定一个double值
  • setFloat(int parameterIndex, float x)向当前SQL 语句中的指定位置绑定一个float 值
  • setInt(int parameterIndex, int x)向当前SQL 语句中的指定位置绑定一个int 值
  • setString(int parameterIndex, String x)向当前SQL 语句中的指定位置绑定一个String 值

6.ResultSet 接口

  • ResultSet 提供检索不同类型字段的方法。
  • getString(int index)、getString(String columnName)获得在数据库里是varchar、char 等类型的数据对象。
  • getFloat(int index)、getFloat(String columnName)获得在数据库里是Float 类型的数据对象。
  • getDate(int index)、getDate(String columnName)获得在数据库里是Date 类型的数据。
  • getBoolean(int index)、getBoolean(String columnName)获得在数据库里是Boolean 类型的数据。
  • getObject(int index)、getObject(String columnName获取在数据库里任意类型的数据

7.CallableStatement 接口

继承自PreparedStatement 接口,由方法prepareCall 创建,用于调用数据库的存储过程。

JDBC 的使用步骤

加载数据库驱动程序→ 建立数据库连接Connection → 创建执行SQL 的语句Statement → 处理执行结果ResultSet → 释放资源

小例子:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class JdbcTest {//向departments表添加对象public void insertDepartments(String department_name,int location_id) {Connection conn =null;Statement state = null;try {//驱动注册Class.forName("com.mysql.jdbc.Driver");//创建连接conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjsxt?useUnicode=true&characterEncoding=utf-8", "root", "root");String sql = "insert into departments values(default,'"+department_name+"','"+location_id+"')";state = conn.createStatement();int flat = state.executeUpdate(sql);System.out.println(flat);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(state!=null) {try {state.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(conn!=null) {try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}public static void main(String[] args) {JdbcTest test= new JdbcTest();test.insertDepartments("jan", 111);}
}

jdbc executebatch 非事务_jdbc技术相关推荐

  1. jdbc executebatch 非事务_面试:Mybatis事务请讲解一下?

    点击上方"JAVA",星标公众号重磅干货,第一时间送达 1.说到数据库事务,人们脑海里自然不自然的就会浮现出事务的四大特性.四大隔离级别.七大传播特性.四大还好说,问题是七大传播特 ...

  2. JDBC学习总结(二)JDBC操作Blob类型字段高效的批量插入JDBC处理数据库事务将多个SQL看成一个事务执行数据库连接池C3P0DBCPDruidDBUtils工具类实现CRUD

    JDBC学习总结(二)JDBC操作Blob类型字段/高效的批量插入/JDBC处理数据库事务/将多个SQL看成一个事务执行/数据库连接池C3P0/DBCP/Druid/DBUtils工具类实现CRUD ...

  3. Spring——DAO层、Spring JDBC、Spring事务控制

    目录 一.Spring对持久层技术支持 1.Spring支持的持久层技术 2.Spring JDBC 2.1. JDBCTemplate类 2.2.Spring JDBC CRUD操作 2.3.Spr ...

  4. Docker中搭建redis分片集群,搭建redis哨兵结构,实现springboot中对redis分片集群、哨兵结构的访问,Redis缓存雪崩、缓存击穿处理(非关系型数据库技术课程 第十二周)

    文章目录 一.要求: 二.知识总结 缓存雪崩 解决方案 docker中redis分片集群搭建 配置好配置文件 redis-6380.conf redis-6381.conf redis-6382.co ...

  5. 非事务 DML 语句

    本文档介绍非事务 DML 语句的使用场景.使用方法.使用限制和使用该功能的常见问题. 非事务 DML 语句是将一个普通 DML 语句拆成多个 SQL 语句(即多个 batch)执行,以牺牲事务的原子性 ...

  6. JDBC executeBatch批量插入数据

    JDBC executeBatch批量插入数据 JDBC executeBatch批量插入数据 JDBC executeBatch批量插入数据 con.setAutoCommit(false); 项目 ...

  7. 干货丨从基础知识到实际应用,一文了解「机器学习非凸优化技术」

    文章来源:机器之心 优化作为一种研究领域在科技中有很多应用.随着数字计算机的发展和算力的大幅增长,优化对生活的影响也越来越大.今天,小到航班表大到医疗.物理.人工智能的发展,都依赖优化技术的进步. 在 ...

  8. JDBC executeBatch 抛出异常停止

    JDBC executeBatch 抛出异常停止 参考文章: (1)JDBC executeBatch 抛出异常停止 (2)https://www.cnblogs.com/luoyanli/p/385 ...

  9. cassandra mongodb选择——cassandra:分布式扩展好,写性能强,以及可以预料的查询;mongodb:非事务,支持复杂查询,但是不适合报表...

    Of course, like any technology MongoDB has its strengths and weaknesses. MongoDB is designed for OLT ...

最新文章

  1. 「镁客·请讲」必捷网络王振中:融合视联网平台将从根本上治疗实时通讯行业应用痛点...
  2. openocd调试Linux内核,Ubuntu下配置OpenOCD+FT2232
  3. HMM 模型输入数据处理的优雅做法 来自实际项目
  4. 4.事务提交过程,事务基本概念,Oracle中的事务生命周期,保存点savepoint,数据库的隔离级别
  5. MobileSpace-关于我的激情的故事
  6. 树莓派开始玩转linux pdf_用树莓派构建 Kubernetes 集群 | Linux 中国
  7. Google Colab 免费GPU 教程
  8. ArcGIS水文分析实战教程(10)河流平均比降计算
  9. 商(quotient)—— 两数之比
  10. php 框架测试,PHP测试框架PHPUnit组织测试操作示例
  11. 使用Fresco实现简单的显示一张图片
  12. matlab 图像保存为视频教程,山东大学《数字图像处理(MATLAB)》江铭炎视频教程
  13. win 7 双击themepack主题包没反应的完美解决方法!
  14. 22轴三菱Q系列程序案例点胶机,QJ71C24串口与位移传感器通信案例
  15. Win10 迅雷9精简优化设置方法
  16. 凭借这份《2022测试面经》候选者逆袭面试官,offer拿到手软
  17. QStackWidget使用 踩坑
  18. MySQL8.0登录提示caching_sha2_password问题解决方法
  19. android关闭本应用的通知声音代码,关于android:当我的应用取消通知时,播放带有FLAG_INSISTENT通知的声音不会停止...
  20. docker开放端口

热门文章

  1. [Python]输入与输出
  2. 浅谈n个球和m个盒子之间的乱伦关系
  3. 温故知新ASP.NET 2.0(C#)(1) - MasterPage(母版页)
  4. CentOS系统修改IP
  5. wikioi 1306 机智Trie树
  6. Unity3d札记 --TanksTutorial收获与总结
  7. sed 删除行首空格
  8. Devexpress 15.1.8 Breaking Changes
  9. 开源组件 Ehcache中被曝严重漏洞,影响多款Jira产品
  10. 听说你决定当全职自由漏洞猎人了?过来人想跟你聊聊