简单的JDBC编程步骤

1.加载数据库驱动(com.mysql.jdbc.Driver)

2.创建并获取数据库链接(Connection)

3.创建jdbc statement对象(PreparedStatement)

4.设置sql语句

5.设置sql语句中的参数(使用preparedStatement)

6.通过statement执行sql并获取结果

7.对sql执行结果进行解析处理

8.释放资源(resultSetpreparedstatementconnection)

package cn.wh.jdbc.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * JdbcTest.java 简单的jdbc编程步骤过程
 */
public class JdbcTest {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
            // 1.加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2.创建数据库连接
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8",
                    "root", "1234");
            // 3.书写sql语句
            String sql = " select * from user where username=? ";
            // 4.创建statement,预处理sql语句
            preparedStatement = connection.prepareStatement(sql);
            // 5.设置sql里的参数
            preparedStatement.setString(1, "张三");
            // 6.执行sql,得到结果集
            resultSet = preparedStatement.executeQuery();
            // 7.遍历结果集,打印输出
            while (resultSet.next()) {
                System.out.println(resultSet.getString("id") + " "
                        + resultSet.getString("username"));
            }
        }
        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {
            // 8.释放资源
            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();
                }
            }
        }

    }
}

注意:jdbc存在的问题,如何解决??

答:1.数据库链接创建、释放频繁 造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。

      2.Sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

    3.使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。

      4.对结果集解析存在硬编码(查询列名),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便。

 

原文地址:https://www.cnblogs.com/wanghui1316/p/5417957.html