Java第八次作业
(一)学习总结
1.用思维导图对本周的学习内容进行总结。
参考资料: XMind。
2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用PreparedStatement接口而不使用Statement,比较使用两种接口的不同之处。
Statement接口
一个Statement对象用于执行静态SQL语句,并获得语句执行后的结果
executeUpdate(String sql)方法执行数据库的SQL语句,返回更新记录数
executeQuery(String sql)方法执行数据库查询操作,返回一个结果集对象
conn = JDBCUtils.getConnection(1);
String sql = "insert into pet(no,type,age,number,price) values (?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pet.getNo());
pstmt.setString(2, pet.getType());
pstmt.setString(3, pet.getAge());
pstmt.setString(4, pet.getNumber());
pstmt.setString(5,pet.getPrice());
int num = pstmt.executeUpdate();
PreparedStatement接口创建一个可以编译的SQL语句对象,该对象可以被多次运行,以提高执行效率,该接口是Statement类的子接口,属于预处理操作,与Statement接口不同的是,PreparedStatement接口操作时,在数据表中准备好SQL语句,内容暂时不设置,等待用户分别设置,PreparedStatement接口除Statement的所有操作,还有新操作
executeUpdate()方法执行设置的预处理SQL语句
executeQuery()方法执行数据库查询操作,返回ResultSet
使用Statement接口(进行查询时,SQL语句的内容是具体的),Statement在每次调用时,都要重新进行编译
使用PreparedStatement接口(进行查询时,SQL语句使用占位符进行设置具体内容),PreparedStatement是预编译语句,支持批处理,能够减少对数据库资源的占用
PreparedStatement能够编写动态查询语句
为什么使用PreparedStatement而不用Statement?
使用PreparedStatement提升代码的可读性和可维护性还可提升性能,提高了安全性
总结:虽然在对数据库中的数据只进行一次性的存取时,使用Statement会比PreparedStatement更有效率,但使用PreparedStatement能够提升数据库的总体效率以及安全性,所以在开发中尽量使用PreparedStatement
3.其他需要总结的内容。
File类提供了创建文件、获取文件属性的机制。
在不同操作系统中路径分割符是不一样的:
public static final String separator。
File file=new File("d:"+File.separator+"test.txt");
(1)File类构造方法:
public File(String path)
如果path是实际存在的路径,则该File对象表示的是目录;
如果path是文件名,则该File对象表示的是文件。
(2)获取文件名称和路径
String getPath()方法返回File对象的路径
String getAbsolutePath()方法返回File对象的绝对路径
(3)测试文件的属性
boolean exists( )检查File文件是否存在
boolean canWrite( )回当前文件是否可写
boolean isDirectory( )检测是否是目录
(4)创建或删除文件、目录
public boolean createNewFile() throws IOException :创建文件
boolean mkdir()和boolean mkdirs():创建目录。创建目录的位置完全取决于File对象的路径。
boolean delete():删除文件或目录,删除目录时,应该保证所删目录是一个空目录,否则删除操作失败
(5)目录清单
String[] list()方法产生目录清单,只列出名称
2.字节输出流OutputStream类
(1)OutputStream类是一个抽象类,需要通过子类进行对象的实例化操作。
(2)FileOutputStream子类。
生成FileOutputStream对象时,如果文件不存在,则创建该文件供程序输出数据,如果文件已经存在,则有覆盖和附加两种输出数据的方式:
覆盖:原文件数据被丢弃,重新输出数据;
附加:在原文件末尾追加输出数据
(3)字节输入流InputStream类,FileInputStream子类
(4)字符输入/输出流Reader类/Writer类
字节输入/输出流是以byte类型为主,字符输入/输出流是以char类型为主,且支持String的直接操作。
Reader和Writer类是抽象类,对文件的操作要使用FileReader子类和FileWriter子类,许多方法与InputStream和OutputStream类相同。
(二)实验总结
实验内容:
1.宠物商店
使用JDBC实现宠物商店,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。
程序的设计思路:
(1)首先用java连接数据库
(2)重新设置SQL,创建数据库
(3)设置端口
(4)将数据库中的SQLQuery1.sqi导入java项目中。
(5)书写Java代码
(三)代码托管
- 码云commit历史截图