JDBC
一.什么是JDBC?
JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是用于在Java语言编程中与数据库连接的API。
二.常见的JDBC组件
DriverManager:此类管理数据库驱动程序列表。 使用通信子协议将来
自java应用程序的连接请求与适当的数据库驱动程序进行匹配。在JDBC
下识别某个子协议的第一个驱动程序将用于建立数据库连接。
Driver:此接口处理与数据库服务器的通信。我们很少会直接与Driver对
象进行交互。 但会使用DriverManager对象来管理这种类型的对象。 它
还提取与使用Driver对象相关的信息。
Connection:此接口具有用于联系数据库的所有方法。 连接
(Connection)对象表示通信上下文,即,与数据库的所有通信仅通过连接
对象。
Statement:使用从此接口创建的对象将SQL语句提交到数据库。 除了执
行存储过程之外,一些派生接口还接受参数。
ResultSet:在使用Statement对象执行SQL查询后,这些对象保存从数据
库检索的数据。 它作为一个迭代器并可移动ResultSet对象查询的数据。
SQLException:此类处理数据库应用程序中发生的任何错误。
三.JDBC简单示例代码
构建JDBC应用程序涉及以下步骤:
1.加载驱动
2.获取数据库连接
3.准备sql语句
4.执行sql语句
5.处理结果集
6.关闭数据库连接
7.异常处理
下面简单示例如何用代码实现:
1.MySQL中class数据库下新建了一张test表
2.定义一个PO类,类中的属性与表对应。
public class TestPO { private int id; private String name; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "TestPO{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + '}'; } }
3.JDBC演示类
import java.sql.*; public class JDBCDemo { public static void main(String[] args) { JDBCTest(); } private static void JDBCTest(){ //1.加载类驱动 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection connection=null; PreparedStatement preparedStatement=null; ResultSet resultSet=null; //2.获取连接对象 try { connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/class35","root",""); //3.准备SQL语句 String SQL="SELECT * FROM test"; //4.执行SQL语句 preparedStatement = connection.prepareStatement(SQL); //设置参数(有则设置,无则不设) //5.处理结果集 resultSet=preparedStatement.executeQuery(); //处理结果集结合next()方法,有则返回true,无则false; while (resultSet.next()){ TestPO ts=new TestPO(); ts.setId(resultSet.getInt("id")); ts.setName(resultSet.getString("name")); ts.setPassword(resultSet.getString("password")); System.out.println(ts); } } catch (SQLException e) { e.printStackTrace(); }finally { //6.释放资源 if (resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); }finally { if (preparedStatement!=null){ try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); }finally { if (connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } } } } }
控制台输出结果:
如何更改表中数据
执行增、删、改的SQL语句,需要调用statment的executeUpate()方法,返回值为int型,为影响行数。
下面演示如何更新表中的数据:
import java.sql.*; public class JDBCDemo { public static void main(String[] args) { JDBCTest(); } private static void JDBCTest(){ //1.加载类驱动 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection connection=null; PreparedStatement preparedStatement=null; int resultSet=0; //2.获取连接对象 try { connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/class35","root",""); //3.准备SQL语句 String SQL="UPDATE test SET name=? WHERE id=?"; //4.执行SQL语句 preparedStatement = connection.prepareStatement(SQL); //设置参数(有则设置,无则不设) preparedStatement.setString(1,"张三"); preparedStatement.setString(2,"1"); //5.处理结果集 resultSet=preparedStatement.executeUpdate(); System.out.println(resultSet); } catch (SQLException e) { e.printStackTrace(); }finally { if (preparedStatement!=null){ try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); }finally { if (connection!=null){ try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } } }
控制台输出结果:
测试表更改结果:
剩下的增(insert)、删(delete),只需要更改要执行的SQL语句就行了。