数据库编程是指通过代码实现一个MYSQL客户端,同样是通过网络和服务器进行交互,数据库会给咱们提供一组API来不便实现
API:application programming interface ,提供了一组函数/类/或办法,让用户间接去应用,有时可称为接口。
MYSQL,ORACLE,SQL SERVER 等数据库都有不同的API,通过适配器(adapter)把不同品种的API转成JDBC对立的API
适配器(adapter):java培训中称为数据库驱动程序,不同数据库须要不同的驱动程序,java中的数据库驱动程序是一个独立的“jar包”,一堆二进制文件的汇合。
maven仓库:jar包的利用商店,在这里下载不同数据库对应的jar包,留神版本对应
导入jar包:
在IDEA的工程中创立一个目录,把jar包拷贝进去。
配置我的项目的一些属性,让我的项目可能找到jar包。
JDBC中以DataSourse API为主。
具体的程序实现:
先创立Database对象。
创立Connection对象,和数据库建设连贯(相当于关上了mysql客户端,输出了明码,连贯胜利)。
拼装SQL语句,用到了prepare,Statement对象(客户端输出sql语句)。
执行SQL语句(在客户端敲下回车)。
查看服务器返回的后果(客户端显示后果)。
敞开连贯,开释资源,后创立的先开释(退出客户端)。
程序
JDBC插入数据
package jar1024;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
//JDBC插入数据
public class TestJDBC {
public static void main(String[] args) throws SQLException {
//1.先创立DataSource对象(DataSource对象生命周期应该是要追随整个程序)
DataSource dataSource = new MysqlDataSource();
//接下来针对datasource进行配置,以便前面能顺利拜访数据库
//次要配置三个方面信息,URL,User,Password 须要向下转型
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("123456");
//2.创立Connection对象,和 数据库建设连贯,就能够和数据库进行后续的数据传输了
//Connection的包是java.sql
//如果不失常就会抛出SQLexception异样
//connection生命周期较短,每次申请可创立一个新的connection
Connection connection = dataSource.getConnection();
//3.拼装sql语句 ,用到prepare,Statement 对象
int id = 1;
String name = "cao";
int classId = 10;
//?是占位符,能够把具体的变量的值替换到?地位
String sql = "insert into student values(?,?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
//1,2,3相当于?的下标
statement.setInt(1,id);
statement.setString(2,name);
statement.setInt(3,classId);
System.out.println("statement" + statement);
//4.拼装好之后,执行SQL
//insert delete update 都应用executeUpdate 办法来执行
//select 就应用executeQuery来执行
//返回值示意此次操作批改了多少行
int ret = statement.executeUpdate();
System.out.println("ret" + ret);
//5.执行结束后,敞开开释相干资源
//肯定是后创立的先开释,留神程序
statement.close();
connection.close();
}
}
- JDBC查找
package jar1024;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
//JDBC查找
public class TestJDBCSelect {
public static void main(String[] args) throws SQLException {
//1.先创立DataSource对象
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("123456");
//2.创立Connection对象,和 数据库建设连贯,就能够和数据库进行后续的数据传输了
Connection connection = dataSource.getConnection();
//3.拼装sql语句 ,用到prepareStatement 对象
String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);
//4.拼装好之后,执行SQL
ResultSet resultSet = statement.executeQuery();
//5.遍历后果集,遍历过程相似于应用迭代器遍历汇合类
//后果集相当于一张表,每张表有很多行,每一行是一条记录(又蕴含很多列)
//next()一方面断定以后是否存在下一行,另一方面如果存在下一行就获取到这一行
//能够直观地把resultSet对象设想成是一个光标
while(resultSet.next()) {
//resultSet的光标指向以后行,就能够把以后行中的列数据获取到
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int classId = resultSet.getInt("classId");
System.out.println(" id: " + id + " name: " + name + " classId: " + classId);
}
//6.执行结束后,敞开开释相干资源
//肯定是后创立的先开释,留神程序
resultSet.close();
statement.close();
connection.close();
}
}
- JDBC删除
package jar1024;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
//JDBC删除
public class TestJDBCDelete {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输出要删除的学生姓名: ");
String name = scanner.next();
//1.先创立DataSource对象
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("123456");
//2.创立Connection对象,和 数据库建设连贯,就能够和数据库进行后续的数据传输了
Connection connection = dataSource.getConnection();
//3.拼装sql语句 ,用到prepareStatement 对象
String sql = "delete from student where name = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
//4.拼装好之后,执行SQL
int ret = statement.executeUpdate();
if (ret == 1) {
System.out.println("删除胜利");
}else{
System.out.println("删除失败");
}
//5.敞开并开释资源
statement.close();
connection.close();
}
}
- JDBC批改
package jar1024;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
//JDBC批改
public class TestJDBCUpdate {
public static void main(String[] args) throws SQLException {
//让用户输出要批改id为n的同学姓名
Scanner scanner = new Scanner(System.in);
System.out.println("请输出要批改的学生id: ");
int id = scanner.nextInt();
System.out.println("请输出要批改的同学姓名: ");
String name = scanner.next();
//1.先创立DataSource对象
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("123456");
//2.创立Connection对象,和 数据库建设连贯,就能够和数据库进行后续的数据传输了
Connection connection = dataSource.getConnection();
//3.拼装sql语句 ,用到prepareStatement 对象
String sql = "update student set name = ? where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setInt(2,id);
//4.拼装好之后,执行SQL
int ret = statement.executeUpdate();
if (ret == 1) {
System.out.println("批改胜利");
}else{
System.out.println("批改失败");
}
//5.敞开并开释资源
statement.close();
connection.close();
}
}