Java工程通过JDBC连接数据库方法(SQL Server)

时间:2020-12-30 21:49:09

目的
开发环境
环境配置
主要代码以及简单分析
效果演示
源码下载

目的

    Java项目以及JavaEE项目大都需要连接数据库,JDBC是一种很基础的链接数据库的一种方法,这篇博客主要实现了Java工程连接数据库并且对数据表进行改动查询的功能。

开发环境

    MyEclipse 2014,SQL Server 2016,Windows操作系统

环境配置

    首先,Java的开发环境是必须配置的,这里不再多说,SQL Server也是安装好并且能够正常运行的,MyEclipse也是能够正常运行的,在这些环境都OK的基础上,我们再来进行一些环境的配置。

以下配置只是为了浏览数据库信息方便,可以跳过

    打开MyEclipse,依次打开windows->open Perspective->MyEclipse DataBase Explore,如图所示:
Java工程通过JDBC连接数据库方法(SQL Server)
    打开之后再左侧空白处右键new一个数据库连接,并且按照图中示例来填写内容:
Java工程通过JDBC连接数据库方法(SQL Server)
    其中,Driver name为数据库连接的名字,可以任意,下面一行则按照图中填写,数据库名字改为自己数据库中拥有的数据库的名字,用户名和密码依次为自己的用户名密码,然后单击Add JARs,选择sqljdbc.jar这个包,这个在博客末尾稍后我会有下载链接接,大家也可以自行百度orGoogle下载。
    之后就可以连接数据库了,打开连接我们就能看到数据库的内容。
Java工程通过JDBC连接数据库方法(SQL Server)

主要代码以及简单分析

    最开始,我们先来新建一个数据库,用于本次测试,数据库创建的SQL语句如下:

create database school
go
use school
create table S
( xh varchar(4) not null primary key,
xm varchar(10) not null,
xb varchar(2) not null,
csrq datetime not null,
jg varchar(6) not null,
sjhm char(11) not null,
yxh varchar(2) not null
insert into S values('1101','李明','男','1993-03-06','上海','13613005466','02')
insert into S values('1102','刘晓明','男','1992-12-08','安徽','18913457890','01')
insert into S values('1103','张颖','女','1993-01-05','江苏','18826490423','01')
insert into S values('1104','刘晶晶','女','1994-11-06','上海','13331934111','01')
insert into S values('1105','刘成刚','男','1991-06-07','上海','18015872567','01')
insert into S values('1106','李二丽','女','1993-05-04','江苏','18107620945','01')
insert into S values('1107','张晓峰','男','1992-08-16','浙江','13912341078','01')

    这里面表单想必不用多说,一看就能看懂。
    之后我们先新建一个Java工程,如图先新建三个类,分别用来处理数据库连接、进行数据库操作和测试。
Java工程通过JDBC连接数据库方法(SQL Server)
    然后我们先来看第一个DBConn的代码:

package dateBaseTest;

import java.sql.*;

public class DBConn {
private static Connection conn; //Connection对象(链接)
//连接数据库
public static Connection getConn(){
try{
//加载注册SQLSever的JDBC驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//编写链接字符串,创建并且获取链接,此数需要更改为自己的数据库名称和自己的用户名以及密码
conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=school","sa","yourpassword");
return conn;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
public static void closeConn(){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

    每一步操作是干什么的注释中都有说明,那么这里就需要我们来引入JDBC的jar包,代码里面有一句就是加载驱动的,如果我们不导入包就会出错的。
右键工程名称,如图依次选择Build Path->Add External Archives,然后选择sqljdbc4.jar(最后会有此jar包下载)。
之后看我们对应的处理数据的DBOpera.java

package dateBaseTest;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

public class DBOpera {
public static Scanner input= new Scanner(System.in);
private static PreparedStatement pstmt;
private static Connection conn;

public DBOpera(Connection conn){
this.conn = conn;
}

public static void queryAge(int maxAge){
String sql = "select * "
+ "from S "
+ "where YEAR(getdate())-YEAR(S.csrq) >= "+String.valueOf(maxAge);
int counts = 0;
try{
pstmt=conn.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1)+" "+
rs.getString(2)+" "+
rs.getString(3)+" "+
rs.getString(4)+" "+
rs.getString(5)+" "+
rs.getString(6)+" "+
rs.getString(7)
);
startAsk(rs.getString(1));
counts++;
}
System.out.println("年龄大于"+maxAge+"的有以上"+counts+"人,查询结束。");

}catch(Exception e){
e.printStackTrace();
}
}

public static void updateYxh(String xh,String yxh){
String sql="update S "
+ "set yxh = "
+ "'"+ yxh +"'"
+ " where xh="
+ "'"+ xh +"'";
try{
System.out.println(sql);
pstmt=conn.prepareStatement(sql);
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}
}

public static void startAsk(String xh){
System.out.println("是否修改此学生院系号:(y:是,n:否)");
String newDno;
String t = input.next();
if(t.equals("y")||t.equals("Y")){
System.out.println("请输入新的院系号:");
newDno = input.next();
updateYxh(xh,newDno);
}
}
}

    其中所用到的PrepareStatement是JDBC提供的一个接口,它是Statement的子接口,可以预编译SQL语句,ResultSet是结果集,这里只涉及了查询与更新操作,删除与修改操作类似。
    下面是测试类:

package dateBaseTest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.*;

public class Main {
public static Scanner input= new Scanner(System.in);
private static Connection conn;

public static void main(String[] args){
int maxAge;
System.out.println("请输入年龄:");
maxAge = input.nextInt();
conn = DBConn.getConn();
DBOpera dbo = new DBOpera(conn);
DBOpera.queryAge(maxAge);
DBConn.closeConn();
}

}

    这三个类实现的功能是:连接数据库,查询年龄大于某个值的学生,依次输出学生信息,并且再每一个学生后面询问是否修改他的院系号,如果修改则输入新的院系号修改数据库,如果不修改则输出下一条学生的信息。

效果演示

如图
Java工程通过JDBC连接数据库方法(SQL Server)
    说明查询数据库成功
Java工程通过JDBC连接数据库方法(SQL Server)
    说明修改成功

源码下载

    下载链接:
    http://download.csdn.net/detail/qq_33171970/9720253