要想用Java实现数据库连接,我们需要jdbc来进行数据库连接操作,因为默认安装的JDK的扩展中没有JDBC驱动
对于Oracle数据库(Oracle11,12,18c)等是对应版本的ojdbc
要想实现连接数据库,要先下载mysql-connector-java-5.1.47
(或者其他版本)的jar包。jar包必须与mysql版本匹配
不过低版本的jar包不会出现时差问题的异常。选择操作系统,windows系统可是一张大图片
建议在下载界面点右边的"Looking for previous GA versions?"下载低版本的。
下载完jdbc以后解压,保存一下
然后就要使用eclipse配置jar了
1.Window-preferences-java-Build Path-User Libraries
2.点击右侧的new按钮
3.在这里输入jdbc,选中对勾,点击ok
4.回到上一级界面,点击Add External JARs,打开到你的jdbc存放的目录,打开-ok。
5.接下来是项目导入jar包,项目右键-Build Path-Configure Build Path
6.点击右侧Add Library… -User Library-Next。打上对勾点击finish
7.回到上一级界面就可以看到你添加的jdbc,点击Apply再点击ok。
8.这样在你的项目下就可以看到你导入的jdbc了
接下来你需要在数据库中建立表,添加表的信息。
下面的是我的。
* 1--- 在system用户建立表*/
show user;
drop table sc;
drop table s;
drop table c;
create table s(
sno char(4) not null primary key,
sname varchar(10),
sex char(3),
dept varchar(4),
age int
);
insert into s values('801','金贤重','男','CS',23);
insert into s values('802','李敏镐','男','MA',25);
insert into s values('803','那英','女','CS',41);
insert into s values('804','金秀贤','女','MA',24);
insert into s values('805','刘德华','男',null,52);
insert into s values('806','文章','男','CS',27);
insert into s values('807','刘欢','男','MA',51);
insert into s values('808','马伊琍','女','CS',36);
insert into s values('809','姚笛','女','MA',23);
insert into s values('810','周杰伦','男',null,39);
create table c(
cno char(3) primary key,
cname varchar(20),
credit int
);
insert into c values('01','数据库',3);
insert into c values('02','OS',4);
insert into c values('03','C++',2);
insert into c values('04','Java',3);
create table sc(
sno char(4),
cno char(3),
grade numeric(3),
constraint sc_pk primary key(sno,cno),
constraint sc_fk1 foreign key(sno) references s(sno),
constraint sc_fk2 foreign key(cno) references c(cno),
constraint sc_grade check (grade between 0 and 100 or grade is null)
);
insert into sc values('801','01',81);
insert into sc values('801','02',null);
insert into sc values('801','03',92);
insert into sc values('801','04',40);
insert into sc values('802','03',68);
insert into sc values('802','04',55);
insert into sc values('803','01',59);
insert into sc values('803','02',45);
insert into sc values('803','04',61);
insert into sc values('804','02',30);
commit;
select * from s;
select * from c;
select * from sc;
下面的是我的测试java代码
package student;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Dbstu {
public static void main(String[] args){
// 加载数据库驱动 com.mysql.jdbc.Driver
String driver = "com.mysql.cj.jdbc.Driver";
// 获取mysql连接地址
String url = "jdbc:mysql://127.0.0.1:3308/text002?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
+ "&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL";
//127.0.0.1是ip
//3308是端口号
//text002是表的名字
//serverTimezone=Asia Shanghai是时区。
//characterEncoding=UTF-8是字符编码方式
// 数据名称
String username ="root";
// 数据库密码
String password ="123456";
// 获取一个数据的连接
Connection conn = null;
// 获取连接的一个状态
try{
Class.forName(driver);
//getConnection()方法,连接MySQL数据库!
conn=DriverManager.getConnection(url,username,password);
if(!conn.isClosed())
System.out.println("数据库连接成功!");
//创建statement类对象,用来执行SQL语句!
Statement Statement=conn.createStatement();
//要执行的SQL语句
String sql="select * from s where sex='男' and age<30" ;
String num,name;
int sum=1;
int age;
//ResultSet类,用来存放获取的结果集!
ResultSet rs=Statement.executeQuery(sql);
System.out.println(" \n\n 学生信息表");
System.out.println(" ---------------------");
System.out.println(" 序号 学号 姓名 年龄");
System.out.println(" ---------------------");
/**5 --对结果表rs处理:
(1) 指针下移一行rs.next(), rs.next()返回值为true或false
(2) 读取当前行数据:getXXX(); 并赋值于Java变量
*/
while(rs.next()){
num = rs.getString("sno");
name = rs.getString("sname");
age = rs.getInt("age");
System.out.println(" "+sum+" "+num+" "+name+" "+age);
sum+=1;
}
System.out.println(" ---------------------");
//6 -- 关闭连接资源
rs.close();
conn.close();
}
catch(ClassNotFoundException e){
//数据库驱动类异常处理
System.out.println("数据库驱动加载失败!");
e.printStackTrace();
}
catch(SQLException e1){
//数据库连接失败异常处理
e1.printStackTrace();
}
catch(Exception e2){
e2.printStackTrace();
}
}
}
执行结果