1、Connection接口
Connection接口代表特定的数据库的连接,在连接上下文中执行sql语句并返回结果。
2、Statement接口
Statement接口用于在已经建立连接基础上向数据库发送sql语句。
3、PreparedStatement接口
PreparedStatement接口用来动态的执行sql语句。
4、DriverManger类
DriverManger类用来管理数据库中所有的驱动程序。
5、ResultSet接口
ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。
通过jdbc连接数据库的操作如下:(需要jdbc包)
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import jdbc1.School;
public class IDUS {
public void insert(School school) throws Exception{
Class.forName("com.mysql.jdbc.Driver");//加载驱动
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/jd?useUnicode=true&characterEncoding=utf-8","root","123456");
//url包含了数据库的主机地址,数据库名称,以及一些额外参数信息
//数据库用户名
//jdbc协议:数据库子协议://数据库主机地址:数据库端口/数据库名称?
System.out.println(connection);
//向数据库中新增信息
//创建预编译查询对象
//创建预编译查询对象时在sql语句中使用?对数据进行占位
PreparedStatement ps=connection.prepareStatement("insert into school(schoolname,address) values(?,?)");
ps.setString(1,school.getName());
ps.setString(2,school.getAddress());
//通过查询对象执行sql语句
//excute()excuteUpdate() excuteQueery()
//excute()excuteUpdate() 可以执行增删改的sql语句
//excute()执行之后返回一个boolean表示这次的sql执行的状态(成功或不成功)
//excuteUpdate()执行之后返回的是一个整数表示的是这一次增删改操作影响了多少行数据
//excuteQueery()执行查询的sql语句
int rows=ps.executeUpdate();
if(rows>0)
{
System.out.println("新增学校成功");
}
//关闭数据库资源
ps.close();
connection.close();
}
public void delete(String name) throws Exception{
Class.forName("com.mysql.jdbc.Driver");//加载驱动
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/jd?useUnicode=true&characterEncoding=utf-8","root","123456");
//创建预编译查询对象
PreparedStatement ps=connection.prepareStatement("delete from school where schoolname=?");
//给?参数赋值
ps.setString(1, name);
int rows=ps.executeUpdate();
if(rows>0) {
System.out.println("删除信息成功");
}
ps.close();
connection.close();
}
//修改信息
public void update(School school) throws Exception{
Class.forName("com.mysql.jdbc.Driver");//加载驱动
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/jd?useUnicode=true&characterEncoding=utf-8","root","123456");
//创建预编译查询对象
PreparedStatement ps=connection.prepareStatement("update school set address=? where schoolname=?");
ps.setString(1, school.getAddress());
ps.setString(2, school.getName());
int rows=ps.executeUpdate();
if(rows>0)
{
System.out.println("更新学校信息成功");
}
ps.close();
connection.close();
}
public List<School> select() throws Exception{
Class.forName("com.mysql.jdbc.Driver");//加载驱动
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/jd?useUnicode=true&characterEncoding=utf-8","root","123456");
//创建预编译查询对象
PreparedStatement ps=connection.prepareStatement("select * from school");
//执行查询结果,查询的结果保存在result中
ResultSet rs=ps.executeQuery();
List<School> list = new ArrayList<School>();
//rs是个结果集包含查询出的数据
//rs.Next()可以判断下一行是否有数据
while(rs.next()) {
//创建school对象
School school=new School();
//取出的列保存到对应的实体属性中
school.setId(rs.getInt("schoolid"));
school.setName(rs.getString("schoolname"));
school.setAddress(rs.getString("address"));
//将school对象保存到集合中
list.add(school);
}
return list;
}
}
下面程序是一个用户创建一个数据库连接的类:
public class BaseDao {
public Connection openConnection() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager
.getConnection(
"jdbc:mysql://localhost/oasystem?useUnicode=true&characterEncoding=utf-8",
"root", "123456");
return connection;
}
}