01.一、JDBC
1、jdbc简介:
JDBCs是一种执行sql语句时候的JavaAPI,可为多种关系型数据库提供统一访问,他有java语言编写的类和接口组成,JDBC提供了一种基准,据此可以构建更高的工具和接口,是数据库开发人员能够编写数据库应用程序。
2、JDBC原理:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jSE4Gl6b-1658237070146)(D:\java1234\java1234笔记\java1234笔记截图\JDBC原理.png)]
二、JDBC链接数据库
1.JDBC链接数据库步骤
(1)、加载数驱动
在eclipse的File里面,加入外面下载的jar包,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KPmdLgOx-1658237070153)(D:\java1234\java1234笔记\java1234笔记截图\image-20220715211933677.png)]
(2)、连接数据库
(3)、使用语句操作数据库
(4)、关闭数据连接,释放资源
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-niOuIVAu-1658237070153)(D:\java1234\java1234笔记\java1234笔记截图\image-20220715212014920.png)]
2.实际操作代码
package com.java123.jdbc.java_jdbc02;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class demo01 {
//数据库地址 需要加上时区,否则报错
// private static String action="jdbc:mysql://localhost:3306/schooldata";
private static String action="jdbc:mysql://localhost/schooldata1?serverTimezone=Asia/Shanghai";
// 用户名
private static String user="***";
// 密码
private static String password="***";
//需要加载驱动的名称
private static String jdbcName="com.mysql.cj.jdbc.Driver";
public static void main(String[] args) {
// 加载驱动
try {
Class.forName(jdbcName);
System.out.println("驱动加载成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("驱动加载失败");
}
Connection con=null;
//在使用数据库连接的时候,用到DriverManager
try {
con=DriverManager.getConnection(action, user, password);
System.out.println("获取数据库连接成功");
System.out.println("进行数据库操作");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("获取数据库连接失败");
}finally {
// 直接获取不到,把con定义到外面
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
三、使用Statement接口实现 增删改查操作
1.statement接口的引入
作用:用于执行静态sql语句并返回它所生成的对象,
import java.sql.Statement;
Statement stmt=con.createStatement();
2.使用statement接口实现添加数据库操作
定义封装一个连接数据库的类,然后调用
package Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Collection;
public class DbUtil {
//数据库地址 需要加上时区,否则报错
private static String action="jdbc:mysql://localhost/meeting?serverTimezone=Asia/Shanghai";
// 用户名
private static String user="root";
// 密码
private static String password="lqs19981106";
//需要加载驱动的名称
private static String jdbcName="com.mysql.cj.jdbc.Driver";
/**
* 链接数据库
* @return
* @throws Exception
*/
public Connection getCon() throws Exception{
Class.forName(jdbcName);
Connection con=DriverManager.getConnection(action, user, password);
return con;
}
/**
* 关闭链接
* @param con
*/
public void close( Connection con) throws Exception{
if (con!=null) {
con.close();
}
}
}
// 上实际操作
package com.java123.jdbc.java_jdbc03;
import java.sql.Connection;
import java.sql.Statement;
import Util.DbUtil;
public class demo01 {
public static void main(String[] args) throws Exception{
// 定义连接的
DbUtil dbUtil=new DbUtil();
String sql="insert into jdbc values(1,'张三',18),(2,'李四',25)";
Connection con=dbUtil.getCon();
Statement stmt=con.createStatement();
//返回值为int 意思为操作的数据条数,也是操作是否成功的标志
int result=stmt.executeUpdate(sql);
System.out.println(result);
stmt.close();
con.close();
}
}
3.使用statement接口实现更新数据库操作
1.先搞一个book模型,在使用时候定义好他的含参构造和get和set方法
package model;
/**
* 图书模型
* @author Administrator
*
*/
public class Book {
private int id;
private String bookName;
private float price;
private String author;
private int bookTypeId;
//含参构造
public Book(int id, String bookName, float price, String author, int bookTypeId) {
super();
this.id = id;
this.bookName = bookName;
this.price = price;
this.author = author;
this.bookTypeId = bookTypeId;
}
//生成的方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getBookTypeId() {
return bookTypeId;
}
public void setBookTypeId(int bookTypeId) {
this.bookTypeId = bookTypeId;
}
}
//上测试
import java.sql.Connection;
import java.sql.Statement;
import Util.DbUtil;
import model.Book;
/**
* 对数据库的数据进行更新
* @author Administrator
*
*/
public class demo04 {
private static DbUtil dbUtil=new DbUtil();
private static int updateBook(Book book) throws Exception{
Connection con=dbUtil.getCon(); //获取连接
String sql="update t_book set id='"+book.getId()+"',"
+ "bookName='"+book.getBookName()+"',"
+ "price='"+book.getPrice()+"'"
+ ",author='"+book.getAuthor()+"',"
+ "bookTypeId='"+book.getBookTypeId()+"' where id="+book.getId(); //格式化代码格式ctrl+shlif+f
Statement stmt=con.createStatement();
int result=stmt.executeUpdate(sql);
dbUtil.close(stmt, con);
return result;
}
public static void main(String[] args) throws Exception {
Book book=new Book(1, "hadoop", 30, "劉黔", 1);
int result=updateBook(book);
if (result==1) {
System.out.println("更新成功");
}else {
System.out.println("更新失败");
System.out.println(result);
}
}
}
//在更新过程中 注意的是在sql语句后面就进行条件选择
4.使用statement接口实现删除数据库操作
在进行数据库的sql语句操作时候,操作没这么麻烦
package com.java123.jdbc.java_jdbc03;
import java.sql.Connection;
import java.sql.Statement;
import Util.DbUtil;
public class demo05 {
private static DbUtil dbUtil=new DbUtil();
private static int deleteBook(int id) throws Exception{
//还是先连接数据库
Connection con=dbUtil.getCon();
String sql="delete from t_book where id="+id;
//创建statement
Statement stmt=con.createStatement();
int result=stmt.executeUpdate(sql);
dbUtil.close(stmt, con); //关闭连接
return result;
}
public static void main(String[] args) throws Exception{
int result=deleteBook(2);
//可以直接用
deleteBook(1);
if (result==1) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
}
}