JDBC学习总结(1)
1.JDBC就是使用Java语言操作关系型数据库的一套API(可以用同一套Java代码,操作不同的关系型数据库)
2.JDBC使用步骤:
(1)创建工程,导入驱动jar包;(创建一个Directory,然后复制粘贴,最后一定要右键选择add as library!)
(2)注册驱动:
Class.forName(“com.mysql.jdbc.Driver”); //MySQL5之后的jar包自带的,可以不用写
(3)获取链接:
Connection conn=DriverManager.getConnection(url,username,password);
url如果是默认的127.0.0.1:3306可以直接省略写为jdbc:mysql:///数据库名称?参数键值对
(4)定义SQL语句:
String sql=“update…”;
(5)获取执行SQL对象:
Statement stmt=conn.createStatement();
(6)执行SQL:
stmt.executeUpdate(sql);
(7)处理返回结果;
(8)释放资源;
rs.close(); //DQL多加一个
stmt.close();
conn.close();
3.JDBC事务管理:
开启事务:setAutoCommit(boolean autoCommit):true为自动提交事务,false为手动提交(即开启事务)
提交事务:commit(); 回滚事务:rollback();
4.JDBC API:Statement作用是执行SQL语句
(1)int executeUpdate(sql):执行DML、DDL语句,返回值是受影响的行数,也可能返回0
(2)ResultSet executeQuery(sql):执行DQL语句,返回值是ResultSet结果集对象
5.JDBC API:ResultSet封装了DQL查询语句的结果
获取查询结果分两步:boolean next(); //将光标从当前位置向前移动一行,判断当前行是否为有效行
xxx getXxx(参数); //获取数据,例如 int getInt(参数); String gerString(参数);
用法:while(rs.next()){
rs.getXxx(参数);
}
6.JDBC API:PreparedStatement:预编译SQL语句并执行,预防SQL注入问题
使用步骤:(1)获取PreparedStatement对象:
String sql = “select *from 表 where username =? and password =?”;
PreparedStatement pstmt = conn.PreparedStatement(sql);
(2)设置参数值:通过setXxx(参数1,参数2)给?赋值;参数一代表?的位置(从1开始),参数二代表?的值
(3)执行SQL:executeUpdate();或者executeQuery(); //这里不需要传入sql
7. 数据库连接池:是一个容器,负责分配、管理数据库连接;他允许应用程序重复使用一个现有的数据库连接,而不是再建立一个新的链接;好处:资源重用、提升系统响应速度、避免数据库连接遗漏
8. 配置文件中会设置有数据库信息、初始化连接数、最大连接数、最大等待时间
9.数据库连接池最常用的是druid,具体用法如下:
(1)导入jar包;(2)定义配置文件;
(3)加载配置文件:
Properties prop = new Properties();
prop.load(new FileInputStream(“jdbc-demo/src/druid.properties”));
/*获取上文路径的方法,先用System.out.println(System.getProperty("user.dir"));
输出后可以获得到当前执行代码的文件路径,然后查看与src/druid.properties文件的所在路径之间还有什么文件,将所缺少的路径例如:jdbc-demo/ 添加到以上代码中*/
(4)获取连接池对象:
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
(5)获取数据库链接Connection:
Connection conn = dataSource.getConnection();
//System.out.println(connection);
之后的代码与数据库操作相同
(6)定义SQL String sql=“…”;
(7)获取pstmt对象
PropertyStatement pstmt = conn.propertyStatement(sql);
(8)设置参数 //executeUpdate(DDL、DML)需要设置参数
pstmt.setXxx(1,数据);
pstmt.setXxx(2,数据);
pstmt.setXxx(3,数据);
(9)执行SQL
ResultSet rs = pstmt.executeQuery(); //DQL
(10)处理结果
(11)释放资源
rs.close(); //DQL多加一个
pstmt.close();
conn.close();
10.
alt+鼠标左键:整列编辑
ctrl+alt+l:格式化代码
ctrl+alt+t:将选中区域放到循环中
alt+enter:抛出异常
alt+enter:补齐前面类名
- 在实体类中,基本数据类型建议使用其对应的包装类型(引用类型)