面试题答案
一键面试主要操作步骤
- 加载数据库驱动:通过
Class.forName("数据库驱动类名")
加载相应的数据库驱动,例如对于MySQL数据库是Class.forName("com.mysql.cj.jdbc.Driver")
。 - 建立数据库连接:使用
DriverManager.getConnection(url, username, password)
方法获取数据库连接对象Connection
。其中url
是数据库连接地址,username
是数据库用户名,password
是数据库密码。 - 创建SQL语句执行对象:通过
Connection
对象的createStatement()
方法创建Statement
对象,或者使用prepareStatement(String sql)
方法创建PreparedStatement
对象。推荐使用PreparedStatement
,因为它能有效防止SQL注入。 - 设置SQL语句参数(如果使用PreparedStatement):如果是
PreparedStatement
,通过setXxx(int parameterIndex, Xxx value)
方法设置参数值,parameterIndex
从1开始。 - 执行SQL插入语句:使用
Statement
的executeUpdate(String sql)
方法,或者PreparedStatement
的executeUpdate()
方法执行插入语句。executeUpdate()
方法返回值是受影响的行数。 - 处理执行结果:根据返回的受影响行数判断插入操作是否成功。
- 关闭资源:依次关闭
Statement
(或PreparedStatement
)、Connection
对象,释放资源,一般放在finally
块中。
容易出错的地方
- 数据库连接
- 驱动加载失败:确保使用的是正确的数据库驱动类名,并且该驱动在项目的类路径下。例如,MySQL 8.0及以上版本驱动类名已变更。
- 连接参数错误:
url
格式错误、用户名或密码错误都会导致连接失败。注意url
中不同数据库有不同的格式要求,如MySQL中可能包含数据库名、字符编码等参数。
- 参数设置(针对PreparedStatement)
- 参数索引错误:参数索引从1开始,若设置参数时索引错误会导致运行时异常。
- 参数类型不匹配:设置参数时类型要与SQL语句中字段类型一致,例如不能将字符串类型的值设置到数值类型的字段中。
- SQL语句
- 语法错误:SQL语句书写不规范,如字段名、表名错误,关键字拼写错误等。特别注意不同数据库对于函数、语法细节等有差异。
- SQL注入风险:如果使用
Statement
拼接SQL语句,用户输入的数据可能被恶意篡改,导致数据泄露或其他安全问题。使用PreparedStatement
可有效避免。
- 资源关闭
- 未关闭资源:如果不关闭
Statement
和Connection
,会导致资源泄漏,影响系统性能。尤其在高并发场景下,资源不及时释放可能导致系统崩溃。
- 未关闭资源:如果不关闭