原生java开发连接MySQL数据库

jdbc编程

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

/**
 1. MySQL数据库JDBC连接Demo
 2. 项目名称:MybatisDemo2
3. 类名称:MySQLJDBCDemo
4. 类描述: 5. 时间 2018年6月25日 下午2:11:57 6. @author wzw 7. @version */
public class MySQLJDBCDemo { public static void main(String[] args) { //数据库连接路径 String url = "jdbc:mysql://localhost:3306/mybatis1?characterEncoding=utf-8"; //数据库用户名 String user = "root"; //数据库密码 String password = "root"; //SQL语句 String sql = "select * from user where user_name = ?"; //数据库连接 Connection connection = null; //预编译处理 PreparedStatement ps = null; //结果集 ResultSet rs = null; try { //通过类加载机制,加载MySQL数据库连接驱动 Class.forName("com.mysql.jdbc.Driver"); //连接数据库 connection = DriverManager.getConnection(url, user, password); //对SQL语句进行预编译 ps = connection.prepareStatement(sql); //对SQL语句中的占位符进行设置 ps.setString(1, "root"); //执行SQL,获取结果集 rs = ps.executeQuery(); System.out.println("Connection: " + connection); System.out.println("PreparedStatement: " + ps); System.out.println("ResultSet: " + rs); /* * 若直接使用resultSet会报SQL异常,异常信息为在结果集开始之前 java.sql.SQLException: Before start of result set * 此外需要注意,rs.getString(0)会报java.sql.SQLException: Column Index out of range, 0 < 1.这是因为resultSet字段索引从1开始 * System.out.println("user: " + rs.getString(0) + " " + rs.getString(1) + " " + rs.getString(2)); */ //遍历结果集 while (rs.next()) { System.out.println("user: " + rs.getString(0) + " " + rs.getString(2) + " " + rs.getString(3)); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { //释放资源 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }

首先,jdbc编程至关重要的一点是,需要MySQL连接jar包,我们通过该jar包,使得我们的java代码可以连接上数据库,从而进行数据查询等操作。
在jdbc编程中三个类很重要,分别是数据库连接的Connection,处理SQL的PreparedStatement,存储结果的ResultSet。当然在jdbc中这三个只是其中的一部分。
我们若要想进行jdbc编程
1. 导入数据库连接jar包
2. 通过类加载机制,加载数据库连接驱动,既像代码中导入数据库连接所需要的类
3. 创建连接,连接数据库需要知道数据库路径,用户名,密码
4. 通过连接对象获取处理SQL的对象
5. 如果SQL语句中存在占位符,需要对占位符设置具体的值,注意,jdbc中索引是从1开始
6. 通过处理SQL的对象执行SQL语句获取结果集
7. 对结果集进行遍历,获取SQL执行后的结果
8. 关闭连接

jdbc编程的缺点

在成熟的数据库开发框架出现之前,一直使用的是这种原生的java语言连接数据库进行开发,而这种开发方式,步骤繁琐复杂,代码篇幅过长,存在各种各样的缺点。
1. 步骤繁琐,代码冗余
2. 各种java原生类,记忆繁琐,jdbc中存在过多的类与方法需要记忆
3. 硬编码,SQL语句需要硬编码,预编译处理中占位符需要硬编码,结果集获取时需要硬编码。ps:这里解释一下什么是硬编码,从代码中可以看出,所谓的硬编码就是需要经常变动的变量,直接嵌入java代码中。既,在计算机程序或文本编辑中,硬编码是指将可变变量用一个固定值来代替的方法。用这种方法编译后,如果以后需要更改此变量就非常困难了。
4. 数据库连接关闭过于频繁,影响效率,可以通过数据库连接池解决该问题
以上四点是我所能想到的jdbc编程中存在的问题,那么我们如何解决这些问题,框架可以帮我们解决。通过封装将繁琐的步骤简单化,通过配置文件解决硬编码的问题,通过数据库连接池解决数据库频繁连接关闭的问题。

你可能感兴趣的:(Mybatis,数据库)