2019年11月8日 日报
JDBC
JDBC访问数据库的步骤(面试题)
1.加载驱动
Class.forName(“包名.驱动名”)
2.获取连接 Connection
DriverManager.getConnection(url,username,password);
比如:连接Oracle的url是jdbc:oracle:thin:@127.0.0.1:1521:xe
3.定义sql 并获取sql的执行环境Statement
conn.createstatement() 这里以后会换成prepareadStatement
4.执行sql处理sql返回值
select 返回ResultSet(结果集) 遍历 st.executeQuery
dml 返回int 代表影响的数据行数 st.executeUpdate
5.释放资源
Connection Statement ResultSet
OJDBC.JAR包就是一堆class文件的压缩包
sql返回值处理的技巧
在查询处理sql返回值的时候,如果只查一条用if(rs.next)即可,但是如果查多条就要用多条whlie(rs.next)
3.使用preparedStatement替换Stetment
1.可以防止拼接的sql注入攻击,原理就是输入的数据不拼接,直接作为真实数据
2.由于采用预编译,会提前生成sql的执行计划,提高执行效率
3.拼接sql 每次sql是不同的 这会给数据库服务器的sql缓冲造成冲击,无法实现批处理而它可以防止此类事件发生
4.由于不拼接sql,程序员出错的概率会降低
5.select * from BANK where USERNAME=?and PASSWORD=?可以用?代替要添加的数据,
工具类思想:
负责获取数据库的连接以及资源的释放,提高代码的复用度
配置文件思想:
思想就是:可以不修改源代码的情况下修改参数数据
获取类加载器并获取资源:类名.class.getclassloader().getResourceAsStream("资源名");
InputStream in=类名.class.getclassloader().getResourceAsStream("资源名");
加载流中的资源
Properties pro=new Propeties();
//加载流中的key value()
pro.load(inputStream);
//可以从pro中取出key对应的值,
就直接用driverClassName=pro.getproperty("资源文件中定义的键名");
executeQuery和executeUpdate的区别
executeQuery是用来查看select等的返回信息,
executeUpdate是用来查看增删改的影响行数
DAO接口(重点,天天用)
什么事DAO?
Data Access Object 数据访问对象
它是对数据访问过程封装的对象
如何编写DAO?
1.根据需求编写DAO对应的接口
2.使用DBUtil工具类结合JDBC编程的五步 实现接口中对应的方法
接口定义的3部分
1.接口定义的返回值类型
2.方法的名字
3.方法的参数