JDBC

什么是JDBC

  • Java DataBase Connectivity,java数据库连接,
    实际上jdbc是java中的一套和数据库交互的api
    (application program interface 应用程序编程接口)

为什么使用JDBC

  • 因为java程序员需要连接多种数据库(orcale,mysql,db2等)为了避免每一个数据库都学习一套新的api,sun公司提出了一个jdbc接口,各个数据库厂商根据此接口 写实现类(驱动),这样java程序员只需要掌握JDBC接口中的一套方法,就可以访问任何数据库

如何使用JDBC
1.maven工程
2.下载mysql相关jar包
登陆阿里私服:maven.aliyun.com
- 首页搜索栏输入mysql 搜索
- 找到5.1.6版本 复制坐标 到自已工程的pom.xml文件里
3.创建JDBCDemo1.java类 添加main方法
4.使用步骤:
- 注册驱动
- 获取连接对象
- 创建sql执行对象
- 执行sql语句
- 关闭资源

执行sql的方法

  • execute() 可以执行任意sql,但是推荐执行DDL
    返回值为boolean值 true代表有结果集 false代表没有结果集,
    成功或失败通过是否有异常来判断

    //1.注册驱动
    Class.forName(“com.mysql.jdbc.Driver”);
    //2.获取连接对象
    Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/db3”, “root”, “root”);
    //3.创建sql执行对象
    Statement stat=conn.createStatement();
    //4.执行sql
    stat.execute(“drop table if exists jdbct2”);
    System.out.println(“删除成功!”);
    //5.关闭资源
    stat.close();
    conn.close();

  • executeUpdate(sql) 推荐执行DML
    返回值为int类型 代表生效的行数

    Class.forName(“com.mysql.jdbc.Driver”);
    Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/db3”, “root”, “root”);
    Statement stat=conn.createStatement();
    String sql=“insert into jdbct1 values(1,‘Tom’)”;
    stat.executeUpdate(sql);
    System.out.println(“插入成功!”);
    stat.close();
    conn.close();

  • executeQuery(sql) 推荐执行DQL
    insert into jdbct1 values(2,‘Jerry’),(3,‘李白’);

    返回值为ResultSet 里面装了查询结果
    next()方法的作用:判断有没有下一条数据,
    有返回值为true(同时游标往下移动),没有则false

    Class.forName(“com.mysql.jdbc.Driver”);
    Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/db3”, “root”, “root”);
    Statement stat=conn.createStatement();
    ResultSet rs=stat.executeQuery(“select * from jdbct1”);
    //遍历结果
    while(rs.next()){
    int id=rs.getInt(“id”);
    String name=rs.getString(“name”);
    System.out.println(id+":"+name);
    }
    stat.close();
    conn.close();

数据库类型和Java类型对比
mysql java
int getInt
varchar getString
float/double getFloat/getDouble
datetime/timestamp getDate
ResultSet获取数据的方式
1.通过字段名获取 如:getString(“name”)
2.通过查询到结果数据的位置获取 如:getString(2);
位置从1开始
读取配置文件
//创建读取配置文件的对象
Properties prop=new Properties();
//获取文件输入流
InputStream ips=DBUtils.class.getClassLoader()
.getResourceAsStream(“jdbc.properties”);
//把文件加载到对象中
try {
prop.load(ips);
//读取连接数据库的信息
driver=prop.getProperty(“driver”);
url=prop.getProperty(“url”);
username=prop.getProperty(“username”);
password=prop.getProperty(“password”);
} catch (IOException e) {
e.printStackTrace();
}

数据库连接池

  • DBCP DataBase Connection Pool:数据库连接池

  • 为什么使用:如果没有连接池,每一次业务都需要和数据库服务器建立一次连接,
    业务处理完毕断开连接,如果有上万次业务就会有上万次的开关连接,频繁
    开关连接非常浪费资源,使用数据库连接池,可以设置几个初始连接,如果
    有业务需要使用连接,则从连接池中直接获取,如果连接池中连接用光,则
    会等待连接归还后现获取连接

  • 如何使用数据库连接池
    1.下载jar包:从maven私服中搜索 dbcp
    2.代码:
    //1.创建数据源对象
    BasicDataSource dataSource=new BasicDataSource();
    //2.设置数据库连接信息
    dataSource.setDriverClassName(“com.mysql.jdbc.Driver”);
    dataSource.setUrl(“jdbc:mysql://localhost:3306/db3”);
    dataSource.setUsername(“root”);
    dataSource.setPassword(“root”);
    //3.设置连接池策略信息
    dataSource.setInitialSize(3);//初始连接数量
    dataSource.setMaxActive(5);//最大连接数量
    //4.从连接池中获取连接对象
    Connection conn=dataSource.getConnection();
    System.out.println(conn);

解决jdbc乱码问题
在url后面添加如下内容
jdbc:mysql://localhost:3306/db3?
useUnicode=true&characterEncoding=UTF-8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值