Java全栈学习笔记34
# JDBC
java database connection Java 数据库连接技术
## JDBC 驱动程序
如果需要通过jdbc技术连接关系型数据库,就需要为jdbc提供一个该数据库的驱动。
驱动程序由对应的数据库厂商提供。
mysql提供了针对于各种语言的驱动程序。去官网下载和java相关的驱动即可
## JDBC连接的步骤
1. 导入mysql的驱动.jar
2. 注册驱动,在jdbc4.0 之后变为可选,因为下载的驱动中包含了对驱动类的配置
Class.forName("com.mysql.cj.jdbc.Driver")
3. 获取连接
DriverManager 类 管理驱动,并可以通过方法从驱动中获取连接
getConnection()
jdbcUrl:数据库的路径
user:用户名
password :密码
String jdbcUrl = "jdbc:mysql://localhost:3306/empdb?useSSL=true&serverTimezone=Asia/Shanghai&charset=UTF-8";
String username = "root";
String password = "admin"
Connection conn = DriverManager.getConnection(jdbcUrl,username,password)
4. 执行sql语句
String sql = "select * from emp";
Statement st = conn.createStatement();
5. 获取结果集
java
ResultSet rs = st.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getString("ename"));
}
6. 关闭结果集
rs.close()
7. 关闭语句
st.close()
8. 关闭连接
conn.close()
## Statement
执行sql语句
String sql = "select * from emp";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
只执行sql.不做sql处理。很容易造成sql注入攻击。所以一般使用PreparedStatement
## PreparedStatement
sql的预编译。查看sql是否合理。后续通过该对象的方法进行参数设置。
需要使用`?`这种占位符的方式,表明参数的位置。和类型无关
设置参数时的参数位置从左往右,从1开始依次增加
String sql = "select * from emp where job = ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(位置,值)
setString 设置字符串参数
setInt()
setDouble
...
getMoreResults(); 执行存储过程时,获取多个结果集
## CallableStatment
执行的存储过程
获取多个结果集
getMoreResults() 获取多个结果集。
if(pst.getMoreResults()) {
rs = pst.getResultSet();
while(rs.next()) {
System.**out**.println(rs.getString(2));
}
}
## ResultSet
getMetaData() 返回对象 ResultSetMetaData 包含表的中信息
getColumnCount() 返回结果集中列的数量
getColumnName(int) 返回指定索引列的名称。索引从1开始,这个名称是真实名称
getColumnLabel(int) 返回指定索引的结果集中的列名。(如果是别名,则列别名)
getInt/getString()....系列方法
通过列索引获取和指定列的值
通过列名称获取指定列的值
## java 项目的分类
java项目---- 打包 jar包
网站项目---- war包