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

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

目的

    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 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工程,如图先新建三个类,分别用来处理数据库连接、进行数据库操作和测试。
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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值