1.3 课前问题列表
1.回想“流与文件”章节,如何将一组对象存储到文件中?主要步骤是什么。
主要步骤如下:
-
打开文件:首先需要创建或打开目标文件,以便可以向其中写入数据。
-
序列化对象:将要存储的对象进行序列化,即将其转换为字节流的形式,以便可以写入文件。
-
写入文件:将序列化后的对象数据写入到已打开的文件中。
-
关闭文件:在完成写入操作后,需要关闭文件以确保数据被正确地保存
2.关系数据库中使用表存储数据。查询资料回答:表的设计应该遵循什么基本规范?如果要将Student对象(学号、姓名、年龄、分数、学院)存入数据库,要怎么设计表?设计几个表?
表设计应遵守的规范:
1.符合规范化要求:表的设计应该符合数据库的规范化要求,减少数据冗余并确保数据的一致性和完整性。
2.定义主键:每个表应该有一个能唯一标识每一条记录的主键,以确保记录的唯一性
3.定义外键:在需要引用其他表的情况下,应该使用外键来建立表与表之间的关联关系。
4.字段命名规范:字段的命名应该具有描述性,易于理解,并且遵循命名规范。
如果要将Student对象(学号、姓名、年龄、分数、学院)存入数据库,可以设计一个名为 "students" 和一个名为“departments”的表
“students"的表结构如下
students
- 学号 (student_id, 主键)
- 姓名 (name)
- 年龄 (age)
- 分数 (score)
- 学院 (department)
对学院信息可以再设计一个表“departments”进行储存
表“departments”如下
departments
- 学院编号 (department_id, 主键)
- 学院名称 (department_name)
将学生和学院信息分别存储在两个表中,并通过学院编号建立了关联关系。这种设计不仅减少了数据冗余,还有助于保持数据的一致性和完整性。
3.JDBC编程的一般步骤是?
步骤如下:
(1)导入java.sql包
(2)加载并注册驱动程序
(3)创建Connection对象,连接数据库
(4)创建Statement的子接口PreparedStatement对象
(5)处理结果集(如果是查询语句)
(6)关闭资源
4.Statement与PreparedStatement有何区别?
-
Statement:
- Statement对象用于执行静态的SQL语句,即在编写代码时已经确定了SQL语句的结构和内容。
- 当使用Statement执行SQL语句时,每次都会将完整的SQL语句发送到数据库进行编译和执行,这可能存在安全隐患(例如SQL注入攻击)。
- 适合用于执行不带参数的简单SQL语句,但在多次执行相同的SQL语句时效率较低。
-
PreparedStatement:
- PreparedStatement对象用于执行动态的SQL语句,即SQL语句的结构已经确定,但是具体的参数值是在执行时动态指定的。
- 在创建PreparedStatement时,SQL语句已经被预编译,并且可以多次执行,因此在执行时只需要传入参数值而不需要重新编译SQL语句,这提高了效率并降低了安全风险。
- PreparedStatement还支持批量更新操作,可以一次性执行多个SQL语句,提高了数据库操作的效率。
总的来说,PreparedStatement比Statement更安全、更高效,特别适合用于执行需要重复执行的SQL语句以及带有参数的SQL语句。因此,在实际开发中,推荐尽量使用PreparedStatement来执行数据库操作。
5.怎么将数据库中表的数据组装成一个对象?
将数据库中表的数据组装成一个对象通常涉及以下几个步骤:
-
定义对象模型:首先需要定义一个Java类,用于表示要从数据库中获取的数据。该类的属性应该对应表中的字段。
-
查询数据库并获取结果集:使用合适的SQL语句执行数据库查询操作,将查询结果存储在结果集中。
-
遍历结果集:遍历结果集中的每一条记录,并从中读取每个字段的数值。
-
创建对象并赋值:针对每条记录,创建一个对象实例,并将结果集中的数据赋值给对象的属性。