主要调用的类
1、DriverManager:驱动管理器类
要操作数据口,首先就要与数据库创建连接,得到连接对象(Connection)。Java.sql包中的DriverManager类定义了连接数据库的方法
public static Connection getConnection(String url, String user, String password)
其中url称为连接串,体现了连接数据库的连接协议、数据库名称、端口、主机号等信息
2、Connection:数据库连接接口
通过DriverManager类的getConnection方法,将获得连接对象,在API中用Connection表示连接对象,获得连接对象后就表示已经与数据库创建了连接。对数据库操作,也就是执行sql语句,需要借助语句对象(Statement),方法如下
Statement createStatement()
3、Statement:语句对象接口
在获得Statement对象之后,Statement提供了executeUpdate、executeQuery方法,分别执行不同的sql语句Int executeUpdate(String sql):执行增加、删除、修改操作的sql语句,返回值为操作的总行数;
ResultSet executeQuery(String sql):执行查询语句,返回值为查询结果集合。
4、ResultSet:结果集接口
JDBC中查询结果都封装在ResultSet对象中,该接口提供了便利结果集的方法,主要的有下面几个:
boolean next():使结果集下标下移,仍有结果返回true,遍历结束,返回false
getXXX(String columnName)根据字段名返回字段名的值,XXX表示数据类型
getXXX(int index)根据索引返回值
实战
1、加载驱动:
在工程目录中创建lib文件夹,将下载好的JDBC放到该文件夹下,如下图所示:
2、连接
增改删操作
package Demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 使用JDBC访问数据库
* 进行增删改操作
*
*/
public class Test {
//用户名
private static final String USER = "root";
//密码
private static final String PASSWD = "root";
//连接串
//useUnicode=true&characterEncoding=utf8解决数据编码问题mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码
//serverTimezone=GMT%2B8北京时间东八区解决时间问题,UTC表示全球标准时间
//useSSL=false指定是否用ssl连接
//ssl连接是Web浏览器与服务器之间的身份认证和加密数据传输.
private static final String URL = "jdbc:mysql://localhost:3306/lj?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
//驱动程序类的名字
private static final String driverClassName = "com.mysql.cj.jdbc.Driver";
//创建连接对象
static Connection connection = null;
//创建语句对象
static Statement statement = null;
public static void main(String[] args) {
try {
// 1、注册数据库的驱动,使用反射注册驱动
//加载驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");//将驱动类加载到内存
System.out.println("注册驱动成功");
//2、获得数据库的连接访问权限
//使用DriverManager类的getConnection方法获取连接对象
connection = DriverManager.getConnection(URL, USER, PASSWD);
System.out.println("连接数据库成功");
//3、向数据库发送执行的SQL执行语句
//使用createStatement获得语句对象
statement = connection.createStatement();
//编写SQL语句
String sql = "insert into user_1 values('liangjie','123456')";
//使用executeUpdate执行增删改语句
statement.executeUpdate(sql);
//4、获取执行的返回结果
} catch (ClassNotFoundException e) {//抛出异常
// TODO Auto-generated catch block
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
//5、关闭数据库连接
finally {//必须执行
if(statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} }
}
查询操作
package Demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test_1 {
/*
* 使用JDBC连接数据库
* 进行查询操作
*/
private static String USER = "root";
private static String PASSWORD = "root";
//连接串
//useUnicode=true&characterEncoding=utf8解决数据编码问题mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码
//serverTimezone=GMT%2B8北京时间东八区解决时间问题,UTC表示全球标准时间
//useSSL=false指定是否用ssl连接
//ssl连接是Web浏览器与服务器之间的身份认证和加密数据传输.
private static String URL = "jdbc:mysql://localhost:3306/lj?userUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
private static final String driverClassName = "com.mysql.cj.jdbc.Driver";
static Connection connection = null;
static Statement statement = null;
static ResultSet result = null;
public static void main(String[] args) {
try {
Class.forName(driverClassName);
connection = DriverManager.getConnection(URL, USER, PASSWORD);
statement = connection.createStatement();
String sql = "select * from user_1";
result = statement.executeQuery(sql);
while(result.next()) {
System.out.println(result.getString("user")+""+result.getString(2));
}
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}
finally {//必须执行
if(statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
懒的打字了,所以直接上代码。