首页 > 其他分享 >JDBC

JDBC

时间:2022-09-08 01:23:57浏览次数:87  
标签:JDBC String 配置文件 对象 数据库 conn pstmt

JDBC 理论概述

JDBC概念:JDBC是使用java语言操作关系型数据库的一套API接口
JDBC驱动:各个关系型数据库厂商根据JDBC API结构做的实现类

JDBC 连接过程

注册驱动

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

获取连接

String url = "jdbc:mysql://127.0.0.1:3306/db1?useSSL = false";    
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url,username,password);
//mysql数据库协议,不同数据库协议不同
//useSSL:设置安全连接的参数,false则关闭安全连接提示
//useServerPrepStmts=true:开启预编译功能,默认关闭

获取对象

普通获取对象

Statement stmt = conn.createStatement();
conn.setAutoCommit(false);//关闭自动事务并开启手动事务
conn.rollback();          //回滚事务
conn.commit();            //提交事务

预编译获取对象

String sql = "select * from tb_user where username = ? and password = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,name);    //设置?位置的值,第一个?值为name变量的值
pstmt.setString(2,password);//设置?位置的值,第二个?值为password变量的值

执行操作

普通执行

String sql = "update account set money = 2000 where id = 1";
int count =  stmt.executeUpdate(sql);
//执行DML、DDL语句,执行DML语句时返回值为语句影响行数
//执行DDL语句时,返回值为0代表执行成功
ResultSet res = stmt.executeQuery(sql);
//执行DQL语句,返回值为结果集对象 
//res.next()表示结果表中的行,读取一行自动切换下一行
//使用getInt(),getString()等get加数据类型命名的方法获取next()行中的列
//从1开始对应第一列数据,以此类推,也可以直接写列的名称

预编译执行

int count =  stmt.executeUpdate();
//执行DML、DDL语句,执行DML语句时返回值为语句影响行数
//执行DDL语句时,返回值为0代表执行成功
ResultSet res = stmt.executeQuery();
//执行DQL语句,返回值为结果集对象 

处理结果

根据业务需求处理

释放连接

普通释放连接

res .close();
stmt.close();//先生成的对象后释放
conn.close();//所有的对象均需释放

预编译释放连接

res  .close();//释放结果对象
pstmt.close();//释放操作对象
conn .close();//释放连接对象

JDBC 的连接池

配置文件

//Druid数据库连接池配置文件
driverClassName=com.mysql.jdbc.Driver  
//数据库连接池名称
url=jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true
//数据库地址
username=root//用户名
password=1234//密码
initialSize=5//数据库连接池初始连接对象线程数
maxActive=10 //数据库连接池初最大接对象线程数
maxWait=3000 //数据库连接最大等待时间

具体使用

//Druid数据库连接池具体使用
public class DruidDemo {
  public static void main(String[] args) {
    Properties prop = new Properties();  
    //创建配置文件对象
    prop.load(new FileInputStream("src/druid.properties"));
    //加在配置文件(地址为配置文件地址)
    DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
    //获取数据库连接池对象
    Connection conn = dataSource.getConnection();
    //获取数据库连接对象
  }
}
//商品品牌数据的查询操作
public class GoodsSelect {
  public static void main(String[] args) {
    Properties prop = new Properties();  
    //创建配置文件对象
    prop.load(new FileInputStream("src/druid.properties"));
    //加在配置文件(地址为配置文件地址)
    DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
    //获取数据库连接池对象
    Connection conn = dataSource.getConnection();
    //获取数据库连接对象
    
    String sql = "select * from goods";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    
    ResultSet res = stmt.executeQuery();
    
    while(res.next()) {
      int id = res.getInt("id");
      res.getString()
    }
    
    res  .close();//释放结果对象
    pstmt.close();//释放操作对象
    conn .close();//释放连接对象
  }
}
//商品品牌数据的增加操作
public class GoodsSelect {
  String brandName = "香飘飘";
  String companyName = "香飘飘公司"
  int ordered = 1;
  String description = "绕地球一圈";
  int status = 1;
  public static void main(String[] args) {
    Properties prop = new Properties();  
    //创建配置文件对象
    prop.load(new FileInputStream("src/druid.properties"));
    //加在配置文件(地址为配置文件地址)
    DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
    //获取数据库连接池对象
    Connection conn = dataSource.getConnection();
    //获取数据库连接对象
    
    String sql = "insert into 
      						goods(brand_name,company_name,ordered,description,status)
                  values(?,?,?,?,?)";
    PreparedStatement pstmt = conn.prepareStatement(sql);
   	pstmt.setString(1,brandName);
    pstmt.setString(2,companyNname);
    pstmt.setInt(3,ordered);
    pstmt.setString(4,description);
    pstmt.setInt(5,status);
    
    int count = stmt.executeUpdate();
    
		System.out.println(count > 0);
    
    pstmt.close();//释放操作对象
    conn .close();//释放连接对象
  }
}

标签:JDBC,String,配置文件,对象,数据库,conn,pstmt
From: https://www.cnblogs.com/yingxin20000303/p/16667872.html

相关文章

  • ShardingSphere-JDBC
    概述ApacheShardingSphere‐JDBC可以通过Java,YAML,Spring命名空间和SpringBootStarter这4种方式进行配置,开发者可根据场景选择适合的配置方式。本文章主要讲解数......
  • 51 | JAVA_数据库JDBC_连接池
    JDBC连接池类似的,在执行JDBC的增删改查的操作时,如果每一次操作都来一次打开连接,操作,关闭连接,那么创建和销毁JDBC连接的开销就太大了。为了避免频繁地创建和销毁JDBC连接,我......
  • 47 | JAVA_数据库JDBC查询
    JDBC查询导入依赖因为我们选择了MySQL5.x作为数据库,所以我们首先得找一个MySQL的JDBC驱动。所谓JDBC驱动,其实就是一个第三方jar包,我们直接添加一个Maven依赖就可以了:<d......
  • 48 | JAVA_数据库JDBC更新
    JDBC更新数据库操作总结起来就四个字:增删改查,行话叫CRUD:Create,Retrieve,Update和Delete。查就是查询,我们已经讲过了,就是使用PreparedStatement进行各种SELECT,然后处理结果......
  • 49 | JAVA_数据库JDBC事务
    JDBC事务数据库事务(Transaction)是由若干个SQL语句构成的一个操作序列,有点类似于Java的synchronized同步。数据库系统保证在一个事务中的所有SQL要么全部执行成功,要么全部......
  • 50 | JAVA_数据库JDBC_批量操作Batch
    JDBCBatch使用JDBC操作数据库的时候,经常会执行一些批量操作。例如,一次性给会员增加可用优惠券若干,我们可以执行以下SQL代码:INSERTINTOcoupons(user_id,type,expir......
  • jdbc连接数据库的步骤
    jdbc连接数据库的步骤:1、加载jdbc驱动程序;2、创建数据库的连接;3、创建preparedStatement;4、执行SQL语句;5、遍历结果集;6、处理异常,关闭JDBC对象资源。本文操作环境:windo......
  • JDBC的七个步骤
    packagecom.lxh.test;importjava.sql.*;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassTestJdbc{publicstaticvoidmain(Stringargs[]......
  • Javaweb-JDBC
    JDBC什么是JDBCJDBC(JavaDataBaseConnectivity)是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。各种不......
  • yml中driver-class-name: com.mysql.jdbc.Driver 解析不到的问题 java 连接数据库
    yml中driver-class-name:com.mysql.jdbc.Driver解析不到的问题java连接数据库当在idea中使用springboot的快捷创建方式时,选中了mysql和jdbc那么pom文件中会直接有......