import java.sql.Connection;import java.sql.DriverManager;import java.sql.PReparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class TestJDBC { public static void main(String[] args) { // 数据库连接 Connection connection = null; // 预编译的Statement(操作数据库), // PreparedStatement预编译的,相同的sql语句,只编译一次,存到缓存中,下次访问如果sql语句相同,直接调用缓存,提高数据库性能 PreparedStatement preparedStatement = null; // 结果集对象 ResultSet resultSet = null; try { // 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 通过驱动管理类获取数据库链接 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root",null); // 定义sql语句 ?表示占位符 String sql = "select * from user where username = ?"; // 获取预处理statement preparedStatement = connection.prepareStatement(sql); // 设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值 preparedStatement.setString(1, "王五"); // 向数据库发出sql执行查询,查询出结果集 resultSet = preparedStatement.executeQuery(); // 添加、修改、删除执行 preparedStatement.executeUpdate(); // 遍历查询结果集 while (resultSet.next()) { System.out.println(resultSet.getString("id") + " " + resultSet.getString("username")); } } catch (Exception e) { e.printStackTrace(); } finally { // 释放资源(倒着释放:结果集->预处理对象->数据库连接) if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }}步骤说明1.加载数据库驱动2.创建并获取数据库链接3.创建jdbc statement对象4.设置sql语句5.设置sql语句中的参数(使用preparedStatement)6.通过statement执行sql并获取结果7.对sql执行结果进行解析处理8.释放资源(resultSet、preparedstatement、connection)问题分析1.数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。2.硬编码部分过多,不易维护,Sql语句、占位符、参数等等。
新闻热点
疑难解答