JDBC API 包含以下几个核心部分:

1:JDBC 驱动

2:Connections (连接)

3:Statements (声明)

4:Result Sets (结果集)

JDBC: 打开数据库连接

Loading the JDBC Driver(加载数据库驱动)

在打开数据库连接前必须先加载数据库驱动

  1. Class.forName("driverClassName");

Opening the Connection(打开连接)

  1. String url = "jdbc:mysql://127.0.0.1:3306/appName";
  2. String user = "root";
  3. String password = "123456";
  4. Connection connection = DriverManager.getConnection(url,user,password);

Closing the Connection(关闭连接)

  1. connection.close();

JDBC:查询数据库

对数据库进行操作,你需要创建SQL Statement,然后发送至数据库,得到返回结果.

  1. Statement statement = conn.createStatement(); 

创建Statement后执行查询

  1. String sql = "select * from table";
  2. ResultSet result = statement.executeQuery(sql); 

对结果集进行迭代

  1. while(result.next()){
  2. String name = result.getString("name");
  3. int age = result.getInt("age");
  4. }
  5. //根据数据库字段名获取对应的数据
  6. result.getString("columnName");
  7. result.getInt("columnName");
  8. result.getLong("columnName");
  9. result.getDouble("columnName");
  10. result.getBigDecimal("columnName");
  11. //通过字段索引顺序获取字段数据,索引从1开始
  12. result.getInt(1);
  13. result.getString(2);
  14. //通过字段名找到数据库对应字段索引的位置
  15. int columnIndex = result.findColumn("columnName");

如果需要迭代大量数据,使用索引的效率要比查询字段名获取数据要快.

完成数据迭代后需要对resultSet和statement进行关闭.

  1. result.close();
  2. statement.close();

JDBC:更新数据库

更新数据库包含更新数据库记录和删除数据库记录

excuteUpdate()方法可以用来更新和删除数据库记录.

更新记录

  1. Statement statement = conn.createStatement();
  2. String sql = "update table set name = ’name‘ where id = 1“;
  3. int rowAffected = statement.executeUpdate(sql); 

rowsAffected代表有多少条记录被更新了.

删除记录

像上面那样更新直接执行sql语句

JDBC:结果集

创建结果集

可以通过执行Statement和PreparedStatement来创建结果集.

  1. Statement statement = conn.createStatement();
  2. String sql = "select * from table";
  3. ResultSet result = statement.executeQuery(sql);
  4.  
  5. PrepareStatement statement = conn.preparedStatement();
  6. ResultSet result = statement.executeQuery(sql);

更新结果集

  1. result.updateString("name","alex");
  2. result.updateInt("age",33);
  3. result.updatBigDecimal("cofficient",new BigDecimal("0.1343");
  4. result.updateRow();

数据将在调用updateRow()方法后才将数据真正更新至数据库,如果updateRow()执行与事物中则需等到事物提交才将数据提交更新.

JDBC:PreparedStatement

PreparedStatement特性:

  1. 更容易操作sql statement 参数

  2. 可对preparedstatement的重用

  3. 更容易的批处理

操作示例

  1. String sql = "update people set firstname=? , lastname=? where id=?";
  2. PreparedStatement preparedStatement = connection.prepareStatement(sql);
  3. preparedStatement.setString(1, "Gary");
  4. preparedStatement.setString(2, "Larson");
  5. preparedStatement.setLong (3, 123);
  6. int rowsAffected = preparedStatement.executeUpdate();

创建PreparedStatement

  1. String sql = "select * from people where firstname=? and lastname=?";
  2.  
  3. PreparedStatement preparedStatement = connection.prepareStatement(sql);
  4. preparedStatement.setString(1, "John");
  5. preparedStatement.setString(2, "Smith");
  6. ResultSet result = preparedStatement.executeQuery();

PreparedStatement的重用

  1. String sql = "update people set firstname=? , lastname=? where id=?";
  2. PreparedStatement preparedStatement = connection.prepareStatement(sql);
  3. preparedStatement.setString(1, "Gary");
  4. preparedStatement.setString(2, "Larson");
  5. preparedStatement.setLong (3, 123);
  6.  
  7. int rowsAffected = preparedStatement.executeUpdate();
  8. preparedStatement.setString(1, "Stan");
  9. preparedStatement.setString(2, "Lee");
  10. preparedStatement.setLong (3, 456);
  11.  
  12. int rowsAffected = preparedStatement.executeUpdate();
JDBC:批量更新操作

Statement Batch Updates

  1. Statement statement = null;
  2. try{
  3. statement = conn.createStatement();
  4. statement.addBatch("update people set firstname='John' where id=123");
  5. statement.addBatch("update people set firstname='Eric' where id=456");
  6.  
  7. int[] recordsAffected = statement.executeBatch();
  8. }finally{
  9. if(statent != null) statement.close();
  10. }

PreparedStatement Batch Updates

  1. String sql = "update people set firstname=? , lastname=? where id=?";
  2.  
  3. PreparedStatement preparedStatement = null;
  4. try{
  5. preparedStatement =
  6. connection.prepareStatement(sql);
  7. preparedStatement.setString(1, "Gary");
  8. preparedStatement.setString(2, "Larson");
  9. preparedStatement.setLong (3, 123);
  10.  
  11. preparedStatement.addBatch();
  12.  
  13. preparedStatement.setString(1, "Stan");
  14. preparedStatement.setString(2, "Lee");
  15. preparedStatement.setLong (3, 456);
  16.  
  17. preparedStatement.addBatch();
  18.  
  19. int[] affectedRecords = preparedStatement.executeBatch();
  20.  
  21. }finally {
  22. if(preparedStatement != null) {
  23. preparedStatement.close();
  24. }
  25. }
JDBC:事务

开始事务

  1. conn.setAutoCommit(false);

事务回滚

  1. conn.rollback();

提交事务

  1. conn.commit();

示例

  1. Connection connection = ...
  2. try{
  3. connection.setAutoCommit(false);
  4. Statement statement1 = null;
  5. try{
  6. statement1 = connection.createStatement();
  7. statement1.executeUpdate(
  8. "update people set name='John' where id=123");
  9. } finally {
  10. if(statement1 != null) {
  11. statement1.close();
  12. }
  13. }
  14. Statement statement2 = null;
  15. try{
  16. statement2 = connection.createStatement();
  17. statement2.executeUpdate(
  18. "update people set name='Gary' where id=456");
  19. } finally {
  20. if(statement2 != null) {
  21. statement2.close();
  22. }
  23. }
  24. connection.commit();
  25. } catch(Exception e) {
  26. connection.rollback();
  27. } finally {
  28. if(connection != null) {
  29. connection.close();
  30. }
  31. }

Java JDBC 基础的更多相关文章

  1. Java JDBC基础学习小结

    JDBC是一个Java应用程序接口,作用是封装了对数据库的各种操作.JDBC由类和接口组成,使用Java开发数据库应用都需要4个主要的接口:Driver.Connection.Statement.Re ...

  2. Java JDBC 基础知识

    一.JDBC常用接口.类介绍 JDBC提供对独立于数据库统一的API,用以执行SQL命令.API常用的类.接口如下: DriverManager 管理JDBC驱动的服务类,主要通过它获取Connect ...

  3. Java JDBC高级特性

    1.JDBC批处理 实际开发中需要向数据库发送多条SQL语句,这时,如果逐条执行SQL语句,效率会很低,因此可以使用JDBC提供的批处理机制.Statement和PreparedStatemen都实现 ...

  4. Java JDBC的基础知识(五)

    本文主要记录JDBC基础知识之后的部分内容.另外,我看到<Java核心基础2>中第四章是主要介绍数据库编程的.里面有一些说明和应用特别灵活,有些部分也太容易理解,建议大家看一下.这篇是依然 ...

  5. Java JDBC的基础知识(三)

    在前面的Java JDBC的基础知识(二)和(三)中,主要介绍JDBC的原理和简单的应用过程.尤其在(二)中,可以发现代码进行多次try/catch,还有在前面创建连接等过程中好多参数我都给写定了. ...

  6. Java JDBC的基础知识(二)

    在我的上一篇Java JDBC的基础知识(一)中,最后演示的代码在关闭资源的时候,仅仅用了try/catch语句,这里是有很大的隐患的.在程序创建连接之后,如果不进行关闭,会消耗更多的资源.创建连接之 ...

  7. Java 中 JDBC 基础配置

    Java 中 JDBC 基础配置 <resource auth="Container" driverclassname="oracle.jdbc.driver.Or ...

  8. Java应用程序连接数据库--JDBC基础

    Java应用程序连接数据库--JDBC基础   Java应用程序连接数据库–JDBC基础 <!-- MySQL驱动,连接数据库用,由数据库厂商提供 --> <dependency&g ...

  9. Java JDBC的基础知识(四)

    之前学习了如何创建一个数据库工具类,如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.Res ...

随机推荐

  1. 跑满带宽的一款百度网盘下载工具 : PanDownload

    下载地址 : 点击进入 官网上面也有介绍使用.在这里,我再说一下 下载之后,解压,运行,登录, 登录好之后,准备进行设置 重要:下载情况分以下三部分 下载内容 < 300M,选择`打包下载`,只 ...

  2. python-嵌套函数

    python-嵌套函数 定义:在函数体内用def定义一个函数,它的作用域只在该函数体内有效. def outside(): print("int the outside") def ...

  3. python生成器并行实例

    生成器并行实例: send发送值被yield接受到赋值给baozi变量 #yield作用只是在这里保存这个值的当前状态然后返回之后在调用next,又回到yield #单纯调用next不会给yield传 ...

  4. grunt的安装及使用

    windows下安装grunt需要先安装ruby和nodejsruby -v 测试ruby是否安装成功node -v 测试nodejs是否安装成功npm -v 测试npm是否安装成功(npm是node ...

  5. 2017noip总结

    day0 酒店位置很好,旁边就是玉树公园,3公里处还有万达广场: 晚上去万达吃喝玩乐, 不过,打车等了好久,手机还没电了. 同时水杯还在广州扎根了...(暗示后文悲惨结局) day1 8:30 监考老 ...

  6. Junit 4测试框架使用

    断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过. 断言核心方法 assertArrayEquals(expecteds, actuals) 查看两个数组是否 ...

  7. Python CGI编程Ⅴ

    通过CGI程序传递 Textarea 数据 Textarea 向服务器传递多行数据,HTML代码如下: textarea.py 脚本代https://www.xuanhe.net/码如下: 修改 te ...

  8. vs2017 2019 下载更新慢的解决方法

    国庆期间 下载的速度只有20多kb. 1.去掉网络适配器里面的 ip6勾选. 2.修改电脑的自动dns, 修改为1.1.1.1  , 修改为8.8.8.8  更快. 记得禁用再启用网络: dns为1. ...

  9. javascript / angular 如何把object转成array

    取出的api 格式是纯object格式 {"name":"james","city":"Taipei","co ...

  10. “==”与equals方法

    “==”操作符 基本类型比较值:判断两个变量的值相等. 引用类型比较引用(是否指向同一个对象):只有指向同一个对象时才相等. 用“==”进行比较时,两边的数据类型必须兼容(可自动转换的基本数据类型除外 ...