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

来源:互联网 发布:淘宝隐形眼镜可以买吗 编辑:程序博客网 时间:2024/04/30 18:05

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

目的

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

开发环境

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

环境配置

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

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

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

主要代码以及简单分析

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

create database schoolgouse schoolcreate 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 nullinsert 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工程,如图先新建三个类,分别用来处理数据库连接、进行数据库操作和测试。
4
    然后我们先来看第一个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();    }}

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

效果演示

如图
6
    说明查询数据库成功
7
    说明修改成功

源码下载

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

3 0