单独使用JDBC编程

JDBC案例

1.创建一个java项目
这里写图片描述
2.在项目中创建一个名称为lib的文件夹,并导入mysql的jar包
这里写图片描述
3.将创建一个类,将一下代码导入类中

package cn.bsw.mybatis.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/** 
 * 单独使用JDBC开发程序
 * @author huihui
 *  */
public class JdbcTest {
    public static void main(String[] args) {
        // 数据库连接
        Connection connection = null;

        // 预编译的Statement,jdbc和数据库通过Statement通信,Statement中封装了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", "mysql");
            // 定义sql语句 ?表示占位符
            // 预编译的Statement好处:可以提高数据库的性能,使用占位符可以有效防止sql注入
            String sql = "select * from user where  username = ? ";
            // 获取预处理statement
            preparedStatement = connection.prepareStatement(sql);
            // 设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
            preparedStatement.setString(1, "王五");
            // 向数据库发出sql执行查询,查询出结果集
            resultSet = preparedStatement.executeQuery();
            // 遍历查询结果集
            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:程序中存在硬编码(数据加载,创建数据库连接,sql语句)问题,不利于系统维护
    这里写图片描述
    其中,3306/mybatis中的mybatis是在mysql中的数据库名

    • 问题1解决方案:可以将sql语句等配置信息配置到xml文件中
  • 问题2:数据库连接使用时打开,不使用时立即关闭,频繁的打开和关闭是对数据库资源的一种浪费

    • 问题2解决方案:使用数据库连接池对链接进行管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值