第14周 预习、实验与作业:Java数据库编程
回想“流与文件”章节,如何将一组对象存储到文件中?主要步骤是什么。
把数据抽象为流,用字节输入输出流(InputStream,OutputStream)进行读写。
主要步骤为:创建一个输入流,通过该流写入文件
public static void writeObjectToFile(Object obj)
{
File file =new File("test.dat");
FileOutputStream out;
try {
out = new FileOutputStream(file);
ObjectOutputStream objOut=new ObjectOutputStream(out);
objOut.writeObject(obj);
objOut.flush();
objOut.close();
System.out.println("write object success!");
} catch (IOException e) {
System.out.println("write object failed");
e.printStackTrace();
}
}
查阅资料得知,Java io包内的ObjectOutputStream可以实现写入对象,把对象序列化,变成字节序列。
关系数据库中使用表存储数据。查询资料回答:表的设计应该遵循什么基本规范?如果要将Student对象(学号、姓名、年龄、分数、学院)存入数据库,要怎么设计表?设计几个表?
数据命名规范
- 所有数据库对象名称必须使用小写字母并用下划线分割。
- 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)。
- 数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符。
- 临时库表必须以 tmp 为前缀并以日期为后缀,备份表必须以 bak 为前缀并以日期 (时间戳) 为后缀。
- 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)。
设计规范
- 数据库和表的字符集统一使用 UTF8MB4
- 所有表和字段都需要添加注释
- 禁止在数据库中存储图片,文件等大的二进制数据
- 优先选择符合存储需要的最小的数据类型
- .....
--引用自《知乎》
学号 姓名 年龄 学院 :学生基本信息表
学号 分数 :学生成绩表
JDBC编程的一般步骤是哪些?
1、加载JDBC驱动程序。
2、提供JDBC连接的URL。
3、创建数据库的连接。
4、创建一个Statement,要执行SQL语句,必须获得java.sql.Statement实例。
5、执行SQL语句。
6、处理两种情况的结果。
7、关闭JDBC对象(关闭结果集-->关闭数据库操作对象-->关闭连接)。
Statement与PreparedStatement有何区别?
PreparedStatement是Statement的子类
- ①PreparedStatement接口代表预编译的语句,它主要的优势在于可以减少SQL的编译错误并增加SQL的安全性(减少SQL注射攻击的可能性)
- ②PreparedStatement中的SQL语句是可以带参数的,避免了用字符串连接拼接SQL语句的麻烦和不安全
- ③当批量处理SQL或频繁执行相同的查询时,PreparedStatement有明显的性能上的优势,由于数据库可以将编译优化后的SQL语句缓存起来,下次执行相同结构的语句时就会很快(不用再次编译和生成执行计划)
怎么将数据库中表的数据组装成一个对象?