jdbc
接口是一个类的父类
java连接数据库, java操作数据库, 把java作为数据库的一个客户端
JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。
当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的!
jdbc开发步骤:
编码, 使用jdk提供的jdbc接口(位于java.sql包),
核心接口: java.sql.Connection(连接)
java.sql.Statement(发送sql,通知数据库执行)
java.sql.ResultSet(获取查询sql的结果集)
一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象
jdbc开发步骤:
添加第三方数据库驱动ja
编码, 使用jdk提供的jdbc接口(位于java.sql包),
核心接口: java.sql.Connection(连接)
java.sql.Statement(发送sql,通知数据库执行)
java.sql.ResultSet(获取查询sql的结果集)
一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象
jdbc的编码
//写程序:记住思路和套路 多谢有时候没有太大作用
>1. 项目中导入数据库驱动jar
>2. 加载启动类
>3. 得到连接对象Connection
>4. 创建Statement对象
>5. 编写sql语句(java普通字符串)
>6. 执行之
>7. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
>8. 关闭资源
实现查询
import java.sql.*;
import java.util.Date;
import java.util.Scanner;
/**
* 查询
*/
public class Demo2 {
public static void main(String[] args) {
/*
1. 加载启动类
2. 得到连接对象Connection
3. 创建Statement对象
4. 编写sql语句(java普通字符串)
5. 执行之
6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
7. 关闭资源
*/
Connection conn = null;
Statement statement = null;
ResultSet resultSet = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";
conn = DriverManager.getConnection(url, "root", "123");
statement = conn.createStatement();
System.out.print("请输入要查询员工姓名:");
Scanner input = new Scanner(System.in);
String name = input.next();
String sql = "select * from emp where ename = '"+name+"'";
System.out.println(sql);
resultSet = statement.executeQuery(sql);
//循环获取数据, 一行一行的获取
//一定要先调用next()
while(resultSet.next()){
//获取这一行的单元格中数据
// getXxx(int 列序号): 从1开始 Xxx: 数据类型
int empNo = resultSet.getInt(1);
String ename = resultSet.getString(2);
String job = resultSet.getString(3);
int mgr = resultSet.getInt(4);
Date hiredate = resultSet.getDate(5);
double sal = resultSet.getDouble(6);
double comm = resultSet.getDouble(7);
int deptNo = resultSet.getInt(8);
System.out.println(empNo+","+ename+","+job+","+mgr+","+hiredate+","+sal+","+comm+","+deptNo);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally{
//倒序关
try {
if(resultSet != null) {
resultSet.close();
}
if(statement != null) {
statement.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
使用jdbc操纵数据库
import javax.xml.bind.SchemaOutputResolver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
/**
* 使用jdbc操作数据
*/
public class Demo1 {
public static void main(String[] args) {
/*
1. 加载启动类
2. 得到连接对象Connection
3. 创建Statement对象
4. 编写sql语句(java普通字符串)
5. 执行之
6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
7. 关闭资源
*/
Connection conn = null;
Statement statement = null;
try {
//1. 加载启动类 反射 核心: Class
Class.forName("com.mysql.jdbc.Driver");
//2.得到连接对象Connection 通过DriverManager的静态方法getConnection()
String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";
conn = DriverManager.getConnection(url, "root", "123");
//System.out.println(conn);
System.out.println("与数据库服务器连接上了...");
//3.创建Statement对象
statement = conn.createStatement();
//4.编写sql语句
//System.out.print("请输入要删除的员工编号:");
System.out.print("请输入要加薪的员工编号:");
Scanner input = new Scanner(System.in);
int empno = input.nextInt();
//删除
//String sql ="delete from emp where empno = "+empno;
String sql ="update emp set sal = sal + 500 where empno = "+empno;
//5.执行之 执行增删改sql: Statement的 int executeUpdate(sql)
// 执行查询sql: Statement的 ResultSet executeQuery(sql)
int rs = statement.executeUpdate(sql);
if(rs > 0){
//System.out.println("删除成功");
System.out.println("加薪成功");
}
} catch (ClassNotFoundException e) {//Driver类找不到
//出现原因: 1. 驱动jar没到导入 2. 驱动类包.类名字符串写错
e.printStackTrace();
} catch (SQLException throwables) {
//出现原因: 1. 数据库服务没有开启 2. url写错 3. 用户名错误 4.密码错误
throwables.printStackTrace();
}finally{
//倒序关
try {
if(statement != null) {
statement.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}