1.回想“流与文件”章节,如何将一组对象存储到文件中?主要步骤是什么。
创建一个对象列表或数组,将要存储的对象包含在其中。
指定要写入的文件路径。创建一个文件输出流(FileOutputStream),用于写入数据到文件。
创建一个对象输出流(ObjectOutputStream),用于将对象序列化并写入文件。
遍历对象列表或数组,将每个对象写入文件。
关闭输出流(ObjectOutputStream和FileOutputStream)。
2.关系数据库中使用表存储数据。查询资料回答:表的设计应该遵循什么基本规范?如果要将Student对象(学号、姓名、年龄、分数、学院)存入数据库,要怎么设计表?设计几个表?
保证每一列的信息准确且唯一。每一列字段的长度应当留有扩大的空间,方便后续就行修改。不设计null值,尽量使每个字段有一个默认值。表的设计应符合第三范式。尽量使用主键作为查询的主要条件。注意表的索引设计。
表名:Students 。列名:学号(StudentID)、姓名(Name)、年龄(Age)、分数(Score)、学院(College)
3.JDBC编程的一般步骤是哪些?
导入JDBC包。注册JDBC驱动。打开连接。创建语句。执行查询。处理结果。执行更新。关闭连接。
4.Statement与PreparedStatement有何区别?
- 预编译:
PreparedStatement
是预编译的SQL语句,这意味着在执行之前,数据库已经为它分配了资源。相比之下,Statement
是动态SQL语句,每次执行时都需要在数据库中创建新的资源。 - 性能:由于
PreparedStatement
是预编译的,所以它比Statement
更有效率。当你需要多次执行相同的SQL语句时,使用PreparedStatement
可以显著提高性能。 - 参数化查询:
PreparedStatement
允许参数化查询,这意味着你可以在SQL语句中插入占位符(例如,?
),并在执行时提供实际的参数值。这种方法可以增加安全性,因为它防止了SQL注入攻击。相比之下,Statement
不支持参数化查询,如果你需要插入变量,必须手动拼接字符串,这可能会导致SQL注入问题。 - 异常处理:
PreparedStatement
提供了更好的异常处理机制。当SQL语句出现问题时,它通常会抛出异常,而不是返回一个错误代码。这使得错误处理更加简单和一致。 - 类型安全:由于
PreparedStatement
支持参数化查询,所以它可以确保参数的类型与SQL语句中的预期类型匹配。这增加了类型安全性和可读性。 - 事务支持:
PreparedStatement
也支持事务,这意味着你可以使用它来执行一组相关的数据库操作,如果其中一个操作失败,可以回滚整个事务。
5.怎么将数据库中表的数据组装成一个对象?
要将数据库中表的数据组装成一个对象,需要使用Java的JDBC(Java Database Connectivity)API或者一些ORM(Object-Relational Mapping)框架,如Hibernate或MyBatis。