JDBC功能简介
首先JDBC是java自带的与数据库连接的一个类,基本功能与Mybatis相同(虽然MyBatis使用起来比它更加方便),它的优势在于由于是由java语言编写完成,所以具有很好的跨平台特性,使用JDBC编写的数据库应用程序可以在任何支持java的平台上运行,而不必在不同的平台上编写不同的应用程序。所以现在依然有一些企业在使用这种方法连接数据库。
JDBC主要功能如下
(1)建立与数据库或者其他数据源的链接
(2)向数据库发送SQL命令
(3)处理数据库的返回结果
实例
代码是最容易让人理解的,所以下面附上一个代码来让大家理解。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJDBC{
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动,没有这个后面的无效
String URL="数据库地址";
String User="数据库用户名";
String Password="数据库密码";
Connection conn=DriverManager.getConnection(URL,User,Password);//获取数据库连接
Statement st=conn.createStatement();//通过上述连接操作数据库,使用Statement类实现对数据库中数据的增删改查操作
//以select语句为例
ResultSet msg=st.executeQuery("select * from user");//查找user表内容
while(msg.next()) {//循环查找到的输出数据
System.out.println(msg.getString("username")+" "+msg.getString("password"));
}
//使用完后关闭资源
msg.close();
st.close();
conn.close();
}
}
Statement中的方法
上面我们看到了我们使用Statement st=conn.createStatement();
来使用tatement类实现对数据库中数据的增删改查操作,那么有哪些Statement呢?Statement中的方法又有哪些呢?
首先有三种Statement对象,它们都作为在给定链接上执行SQL语句的包容器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement继承而来)。它们都专用于发送特定类型的SQL语句:
Statement类型 | 作用 |
---|---|
Statement | 用于执行不带参数的简单的SQL语句;Statement接口提供了执行语句和获取结果的基本方法。 |
PerparedStatement | 用于执行带或不带IN参数的预编译SQL语句;PeraredStatement接口添加处理IN参数的方法。 |
CallableStatement | 用于执行对数据库已存储过程的调用;CallableStatement添加处理OUT参数的方法。 |
而Statement中常用的方法如下:
方法名 | 作用 |
---|---|
execute() | 运行语句,返回是否有结果集。 |
executeQuery() | 运行查询语句,返回ReaultSet对象。 |
executeUpdata() | 运行更新操作,返回更新的行数。 |
addBatch() | 增加批处理语句。 |
executeBatch() | 执行批处理语句。 |
clearBatch() | 清除批处理语句。 |
增加数据库中记录
文章上面已经有一个查询实例了,那么接下来我将给出一个插入语句的实现。
package com.hyx.tree;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TreeMap {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动,没有这个后面的无效
String URL="数据库地址";
String User="数据库用户名";
String Password="数据库密码";
Connection conn=DriverManager.getConnection(URL,User,Password);//获取数据库连接
//插入语句的实现
String s = "" + "insert into user(id,user_name,user_password) values(" + "2,?,123)";
PreparedStatement pst = conn.prepareStatement(s);
//插入两条语句
pst.setString(1, "UZI");
pst.setString(2, "Bang");
//关闭资源
pst.execute();
pst.close();
conn.close();
}
}
删除数据库中记录
package com.hyx.tree;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TreeMap {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动,没有这个后面的无效
String URL="数据库地址";
String User="数据库用户名";
String Password="数据库密码";
Connection conn=DriverManager.getConnection(URL,User,Password);//获取数据库连接
String s = "delete from user where user_name=?";
PreparedStatement pst = conn.prepareStatement(s);
pst.setString(1, "UZI");
pst.setString(2, "Bang");
// 关闭资源
pst.execute();
pst.close();
conn.close();
}
}
改变数据库记录
package com.hyx.tree;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TreeMap {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动,没有这个后面的无效
String URL="数据库地址";
String User="数据库用户名";
String Password="数据库密码";
Connection conn=DriverManager.getConnection(URL,User,Password);//获取数据库连接
String s="update user set user_name=? ";
PreparedStatement pst=conn.prepareStatement(s);
pst.setString(1, "UZI");
pst.setString(2, "Bang");
// 关闭资源
pst.execute();
pst.close();
conn.close();
}
}