JDBC编程

JDBC的概念及作用:

概念介绍:        

        JDBC(Java DataBase Connectivity)是一种数据库连接技术,能实现Java程序对各种数据库的访问。由一组使用Java语言编写的类   和接口(JDBC API)组成

作用:

 1.建立与数据库的访问连接。

 2.将编写好的SQL语句发送到数据库执行。

 3.对数据库返回的执行结果进行处理。

JDBC编程原始方法:

1.加载数据库驱动

Class.forname("com.mysql.jdbc.Driver");

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

Connection con = DriverManager.getConnection(url, username, password);

3.设置sql语句

String sql = "select * from user where username = ?";

4.创建jdbc statement对象

PreparedStatement ps = con.prepareStatement(sql);

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

preparedStatement.setString(1, "张三");

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

resultSet =  preparedStatement.executeQuery();

7对sql执行结果进行解析处理(结果集处理)

8.释放资源

ResultSet.close();
PreparedStatement.close();
Connection.close();

JDBC未封装代码实例:

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

public class JDBCTest {
	public static void main(String[] args) {
		Connection connection = null;
		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", "123456");
			//定义sql语句 ?表示占位符
			String sql = "select * from user where username = ?";
			//获取预处理statement
			preparedStatement = connection.prepareStatement(sql);
			//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
			preparedStatement.setString(1, "zhangsan");
			//向数据库发出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();
				}
			}

		}

	}
}

JDBC的弊端:

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值