JDBC编程——MySQL
来源:互联网 发布:好看的手机壁纸软件 编辑:程序博客网 时间:2024/06/10 05:34
JDBC编程——MySQL
现代应用大多会使用一款数据库来进行持久化存储,开源的MySQL无疑是一个很好的选择。那么Java如何去连接MySQL,并使用它来编写程序呢?
什么是JDBC
- JDBC全称Java Database Connectivity,即Java数据库连接。
- JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC的特点
- 有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。
- 不必为访问MySQL数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问SQL Server数据库又编写另一个程序等等。
- 将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。
如何使用JDBC
JDBC的API介绍
JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中),主要包括:
- DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。
- Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。
- Connection:数据库连接,负责进行与数据库间的通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement。
- Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。
- PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。
- CallableStatement:用以调用数据库中的存储过程。
- SQLException:代表在数据库连接的创建和关闭和SQL语句的执行过程中发生了例外情况(即错误)。
JDBC编程步骤
这里使用的是MySQL数据库,所以需要相应的驱动程序。可以到MySQL的官网去下载。这里我给出当前最新的驱动程序的下载链接, 百度云:http://pan.baidu.com/s/1o8hKSum 密码: 17e4。
- 加载驱动程序
- 利用Class.forName()方法来加载JDBC驱动程序(Driver)至DriverManager:
Class.forName("com.mysql.jdbc.Driver");
- 获取数据库连接
- 从DriverManager中,通过JDBC URL,用户名,密码来获取相应的数据库连接(Connection):
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
- 不同的JDBC驱动程序的URL是不同的,它永远以“jdbc:”开始,但后面的内容依照驱动程序类型不同而各异。
- 如连接本地MySQL数据库:
URL="jdbc:mysql://127.0.0.1:3306/school?useSSL=true&useUnicode=true&characterEncoding=UTF-8";
- 创建Statement对象用以执行SQL语句。
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
简单遍历一张表的示例
package com.xk1995.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class MySQL { public static void main(String[] args) throws ClassNotFoundException, SQLException { // 1加载驱动 Class.forName("com.mysql.jdbc.Driver"); // 2获取连接 String url = "jdbc:mysql://localhost:3306/school?useSSL=true"; String user = "root"; String password = ""; Connection conn = DriverManager.getConnection(url, user, password); // 3创建statement对象 Statement stmt = conn.createStatement(); // 4使用statement对象执行SQL语句 String sql = "select * from user"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { System.out.print("id=" + rs.getInt("id") + " "); System.out.print("username=" + rs.getString("username") + " "); System.out.print("password=" + rs.getString("password")); System.out.println(); } rs.close(); stmt.close(); conn.close(); }}
Statement和PreparedStatement对象详解
Statement常用API
- ResultSet executeQuery(String sql)
- int executeUpdate(String sql)
- void close()
PreparedStatement使用方法
String sql = "select * from user where id = ?";PreparedStatement stmt = conn.prepareStatement(sql);stmt.setInt(1, 2); ResultSet rs = stmt.executeQuery();
- ResultSet executeQuery(String sql)
- int executeUpdate(String sql)
- void close()
- void setInt(int parameterIndex, int x)
- void setString(int parameterIndex, String x)
在JDBC中所有的参数都被代表?符号,这是已知的参数标记。在执行SQL语句之前,必须提供值的每一个参数。
setXXX()方法将值绑定到参数,其中XXX表示希望绑定到输入参数值的Java数据类型。如果忘了提供值,将收到一个SQLException。
每个参数标记是由它的序号位置引用。第一标记表示位置1,下一个位置为2 等等。这种方法不同于Java数组索引,以0开始。
Statement与PreparedStatement区别
- PreparedStatement是预编译的,对于批量处理可以大大提高效率.也叫JDBC存储过程
- 使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
- Statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得,preparedstatement支持批处理
- PreparedStatement对象不仅包含了SQL语句,而且大多数情况下这个语句已经被预编译过,因而当其执行时,只需DBMS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,PreparedStatement对象将会大大降低运行时间,当然也加快了访问数据库的速度。
这种转换也给你带来很大的便利,不必重复SQL语句的句法,而只需更改其中变量的值,便可重新执行SQL语句。选择PreparedStatement对象与否,在于相同句法的SQL语句是否执行了多次,而且两次之间的差别仅仅是变量的不同。如果仅仅执行了一次的话,它应该和普通的对象毫无差异,体现不出它预编译的优越性。 - 执行许多SQL语句的JDBC程序产生大量的Statement和PreparedStatement对象。通常认为PreparedStatement对象比Statement对象更有效,特别是如果带有不同参数的同一SQL语句被多次执行的时候。PreparedStatement对象允许数据库预编译SQL语句,这样在随后的运行中可以节省时间并增加代码的可读性。
- 我们在企业应用程序中更喜欢使用PreparedStatement对象,那就是安全性。传递给PreparedStatement对象的参数可以被强制进行类型转换,使开发人员可以确保在插入或查询数据时与底层的数据库格式匹配。
下表提供了每个接口的用途概要,了解决定使用哪个接口
0 0
- JDBC编程——MySQL
- Mysql——JDBC编程 理论介绍
- JAVA数据库编程—mysql JDBC
- Mysql——JDBC编程 简单的例子
- JDBC编程——缺少Mysql驱动的解决方法
- JAVA编程——jdbc 操作mysql oracle
- JDBC MySQL编程
- 34岁!100天!学会Java编程(Day16-Day19)—MySQL与JDBC编程
- MySQL——JDBC基础
- mysql的JDBC接口编程
- MySQL笔记-jdbc编程步骤
- Mysql数据库和JDBC编程
- JDBC编程学习笔记(一)——与MySQL的连接 ConnMySql.java
- SXT:JDBC超级入门——JDBC编程步骤
- JDBC高级编程——批处理更新
- JDBC高级编程——PreparedStatement
- JDBC高级编程——批处理更新
- JDBC编程——DAO设计模式
- Selenium+Python浏览器调用:Firefox
- Python——基本的序列和映射规则
- 组合查询
- java集合框架
- TCP&UDP协议
- JDBC编程——MySQL
- PHP面向对象_对象串行化serialize(),__sleep(),__wakeup()
- hdu 1002 A + B Problem II
- java常用类
- RecyclerView的基本用法
- java基础-instanceof
- 瞎想一波
- g++和gcc的相同点和区别
- HNOI2002跳蚤--容斥原理