一、JDBC基本介绍
1.1
(1)持久化:将数据保存到可掉电式储存设备中以供之后试用。
(2)数据持久化意味着将内存中的数据保存到硬盘上加以固化,实现过程大多通过各种关系数据库完成。
1.2Java中的数据存储技术
(1)JDBC直接访问数据库
(2)JDO(Java Data Object)技术
(3)第三方O/R工具(Mybatis)
1.3JDBC介绍
(1)JDBC是一种可用于执行SQL语句的JAVAAPI,是连接数据库的Java应用程序的纽带
(2)JADB(Java Database Connectivity)独立于特定数据库管理系统,通用的SQL数据库存储和操作的公共接口(一组API),定义了用来访问数据库的标准Java类
(3)简要理解:JDBC是SUM公司提供的一套API,使用这套API可以实现对具体数据库的操作(获取连接,关闭连接,DML,DDL,DCL)
1.4数据库驱动
(1)我们安装好数据库之后,我们的应用程序也是不能直接使用数据库的,必须要通过相应的数据库驱动程序,通过驱动程序去和数据库打交道。
(2)其实也就是数据库厂商的JDBC接口实现,即对Connection等接口的实现类的jar文件。
Driver接口
(1)表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口
(2)装载SQLServer驱动
(提示:强制异常处理)
try {
Class.forName("com.microsoft.driver.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
(2)装载MySql驱动
Class.forName("com.mysql.jdbc.Driver");
(3)装载Oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
DriverManager(驱动管理器)
(1)驱动管理器类,用于管理所有注册的驱动程序
(2)DriverManger(驱动管理器)的作用有:
(1注册驱动:这可以让JDBC知道要使用的是哪个驱动;
(2获取Connection:如果可以获取到Connection,那么说明已经于数据库连接上了。
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=db_0924";
Connection con = DriverManager.getConnection(url, "sa", "123");
常用的方法:
(1)createStatement():创建向数据库发送sql的statement对象。
(2)prepareStatement(sql):创建向数据库发送预编译sql的PrepareSatement对象。
二、JDBC快速入门
JDBC实现步骤(重点!!!)
第一步:创建项目,导入jar包
第二步:注册驱动,即告诉java代码与哪个数据库进行连接
第三步:获取连接,将Java代码与数据库进行连接
第四步:定义sql语句,就是编写要执行的sql语句
第五步:获取执行sql对象,是获取的sql对象来执行sql语句,所以要先获取sql对象
第六步:执行sql语句
第七步:处理返回结果
第八步:释放资源
JDBC具体实现
1、新增操作:
public void add(String sname , String ssex , int sage , String saddress) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=db_0924";
Connection con = DriverManager.getConnection(url, "sa", "123");
// System.out.println(con);
String sql = "insert into tb_student values(?,?,?,?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, sname);
ps.setString(2, ssex);
ps.setInt(3, sage);
ps.setString(4, saddress);
int n = ps.executeUpdate();
if (n > 0) {
System.out.println("数据库插入数据成功");
}else {
System.out.println("数据插入失败");
}
if (ps != null) {
ps.close();
}
if (con !=null && !con.isClosed()) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
2、删除操作:
public void deletestu(int sid) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=db_0924";
Connection con = DriverManager.getConnection(url, "sa", "123");
// System.out.println(con);
String sql = "delete from tb_student where sid = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, sid);
int n = ps.executeUpdate();
if (n > 0) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
if (ps != null) {
ps.close();
}
if (con !=null && !con.isClosed()) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
3、修改操作
public void modification(int sid , String sname , String ssex , int sage , String saddress) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=db_0924";
Connection con = DriverManager.getConnection(url, "sa", "123");
String sql = "update tb_student set sname = ? , ssex = ? , sage = ? , saddress = ? where sid = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, sname);
ps.setString(2, ssex);
ps.setInt(3, sage);
ps.setString(4, saddress);
ps.setInt(5, sid);
int n = ps.executeUpdate();
if (n > 0) {
System.out.println("修改成功");
}else {
System.out.println("修改失败");
}
if (ps != null) {
ps.close();
}
if (con !=null && !con.isClosed()) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
4、查询所有操作
public void selectstu() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=db_0924";
Connection con = DriverManager.getConnection(url, "sa", "123");
String sql ="select * from tb_student";
PreparedStatement ps =con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
System.out.println("学号:"+rs.getInt(1)+"\t姓名:"+rs.getString(2)+"\t性别:"+rs.getString(3)+"\t年龄:"+rs.getInt(4)+"\t地址:"+rs.getString(5));
}
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (con !=null && !con.isClosed()) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
5、模糊查询操作
public void selectstu(String saddres) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=db_0924";
Connection con = DriverManager.getConnection(url, "sa", "123");
String sql ="select * from tb_student where saddress like '%"+saddres+"%'";
PreparedStatement ps =con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
System.out.println("学号:"+rs.getInt(1)+"\t姓名:"+rs.getString(2)+"\t性别:"+rs.getString(3)+"\t年龄:"+rs.getInt(4)+"\t地址:"+rs.getString(5));
}
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (con !=null && !con.isClosed()) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}