什么是jdbc
jdbc(java data base Connection):java数据库连接,是javaEE一个组件,用于执行sql语句的一套javaAPI,而且提供了多种数据库访问,都时由一套Java类和接口组成。 而具体链接哪种数据库 需要数据库厂商提供驱动包(数据库厂商提供的jar包)
jdbc涉及的接口和类
DriverManager :驱动管理类,根据不同的数据库驱动包 可以对应的数据连接Connection: 连接对象,负责连接数据并且与数据库进行数据交互Statement:可以进行数据交互,最主要的是jdbc中执行sql语句resultSet: JDBC中查询语句 结果对象
jdbc使用步骤
导入驱动包,一般会放在项目的lib目录下面加载驱动类,通过反射。通过driverManager管理驱动类,用来创建连接。通过连接创建Statement对象通过statement对象执行sql语句 执行sql语句的三种方法 execute: 可以执行 增 删 改 查 返回值都是 boolean executeUpdate 适用于增删改 返回值都是int类型 代表是受影响的行数 executeQuery:适用于查询 返回值是 resultset 保存的是每次查询的结果如果是查询 执行sql语句会有结果集返回需要处理结果集关闭资源
连接的具体步骤
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class FirstJdbc {A
public static void main(String[] args) throws Exception{
//1.加载驱动类 oracle.jdbc.driver.OracleDriver
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.通过DriverManager管理驱动包来创建连接
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123");
//url统一资源定位符 数据库链接地址
//url 组成 协议: //IP地址: 端口号 /项目资源/项目目标页面
//oracle 的url jdbc:oracle:thin:@localhost:1521:orcl
//localhost 本机地址 也可以写1527.0.0.1 也可以写其他人的数据库
//1521: 是oracle数据库默认的端口号
//xe: 简化版 企业版 orcl 都是数据库的实例
//3.通过连接对象 6创建Statement对象
Statement statement = connection.createStatement();
//4.Statement用于执行sql语句
/**
* 执行sql语句的三种方法
* execute: 可以执行 增 删 改 查 返回值都是 boolean
* executeUpdate 适用于增删改 返回值都是int类型 代表是受影响的行数
* executeQuery:适用于查询 返回值是 resultset 保存的是每次查询的结果
*/
ResultSet resultSet = statement.executeQuery("select *from t_score");
//5.如果是查询就会有第五步 需要处理结果集 显示结果
while (resultSet.next()){//判断下一行是否有数据
//resultSet.getInt(); 可以放int 或者 string
//int 表示第一列中第几行的值 string表示字段名
Integer sno=resultSet.getInt(1);// 从获取的下一行数据中取第一个值
String cno=resultSet.getString("cno");//从获取的下一行数据中 字段名是cno的值
double degree=resultSet.getInt("degree");
System.out.println("编号:"+sno+" 课程编号:"+cno+" 成绩:"+degree);
}
//关闭资源
resultSet.close();
statement.close();
connection.close();
//迭代器
// Set<Integer> set =new HashSet();
// Iterator<Integer> iterator = set.iterator();
// while (iterator.hasNext()){
// System.out.println(iterator.next());
// }
}
}
java.util.Date 父类
子类
java.sql.Dte 保存年月日
java.sql.Time保存时分秒
java.sql.Timestamp 保存年月日时分秒
连接数据库增删查改
查
根据老师编号查询老师信息
public static void main(String
[] args
) throws ClassNotFoundException
, SQLException
{
Class
.forName("oracle.jdbc.driver.OracleDriver");
Connection conn
=
DriverManager
.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123");
System
.out
.println("请输入要查找的老师的编号:");
Scanner sc
=new Scanner(System
.in
);
int ttno
=sc
.nextInt();
String str
="select * from teacher where tno=?";
PreparedStatement statement
=conn
.prepareStatement(str
);
statement
.setObject(1,ttno
);
ResultSet rs
=statement
.executeQuery();
while(rs
.next()){
int tno
=rs
.getInt("tno");
Date birthdate
=rs
.getTimestamp("birthdate");
String tname
=rs
.getString("tname");
System
.out
.println("编号:"+tno
+" 姓名:"+tname
+" 入职时间:"+birthdate
);
}
rs
.close();
statement
.close();
conn
.close();
}
增
public static void main(String
[] args
)throws Exception
{
System
.out
.println("请输入教师编号:");
int tno
=sc
.nextInt();
System
.out
.println("请输入教师姓名:");
String tname
=sc
.next();
System
.out
.println("请输入教师性别");
String gender
=sc
.next();
System
.out
.println("请输入教师入职时间:(yyyy-MM-dd)");
String birthday
=sc
.next();
SimpleDateFormat sdf
=new SimpleDateFormat("yyyy-MM-dd");
Date birthdate
=sdf
.parse(birthday
);
Class
.forName("oracle.jdbc.driver.OracleDriver");
Connection conn
=
DriverManager
.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123");
String sql
="insert into teacher(tno,tname,gender,birthdate) values(?,?,?,?)";
PreparedStatement statement
=conn
.prepareStatement(sql
);
statement
.setObject(1,tno
);
statement
.setObject(2,tname
);
statement
.setObject(3,gender
);
long time
= birthdate
.getTime();
Timestamp timestamp
=new Timestamp(time
);
statement
.setObject(4,timestamp
);
int num
=statement
.executeUpdate();
System
.out
.println("新增了"+num
+"条数据");
statement
.close();
conn
.close();
}
改
public static void main(String
[] args
) throws Exception
{
int tno
=9999;
String tname
="rose";
String gender
="女";
String sql
="update teacher set tname=?,gender=? where tno=?";
Class
.forName("oracle.jdbc.driver.OracleDriver");
Connection conn
=
DriverManager
.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123");
PreparedStatement statement
=conn
.prepareStatement(sql
);
statement
.setObject(1,tname
);
statement
.setObject(2,gender
);
statement
.setObject(3,tno
);
int i
=statement
.executeUpdate();
System
.out
.println(i
);
statement
.close();
conn
.close();
}
删
public static void main(String
[] args
)throws Exception
{
Class
.forName("oracle.jdbc.driver.OracleDriver");
Connection conn
=
DriverManager
.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","tbj","m123");
String sql
="delete from teacher where tno in (?,?)";
PreparedStatement statement
=conn
.prepareStatement(sql
);
statement
.setObject(1,9999);
statement
.setObject(2,1099);
int i
=statement
.executeUpdate();
System
.out
.println(i
);
statement
.close();
conn
.close();
}