什么是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(同时游标往下移动),没有则falseClass.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