JDBC驱动连接SQLserver数据库

环境配置

软件下载

1.下载java8Java 存档下载 — Java SE 8 | Oracle 中国
2.下载IntelliJ IDEA https://www.jetbrains.com/idea/download/#section=windows
3.下载JDBC驱动程序 https://www.microsoft.com/zh-CN/download/details.aspx?id=11774
(直接下载这个:https://wwz.lanzouw.com/iNiNU05ipyud)
4.下载telnet服务端(不需要好像也可以用) http://www.goodtechsys.com/downloadstelnetnt2000.asp
(直接下载这个:https://wwz.lanzouw.com/iKabZ05iq2ah)

软件配置

SQLserver2019配置管理器

打开SQLserver2019配置管理器

image.png

右键启用三个协议

image.png

右键修改TCP/IP的属性

IP1和IP10的地址修改为127.0.0.1,端口号默认为1433,修改最后一行IPALL的TCP端口号为1433

image.png

Microsoft SQL Server Management Studio 18配置

右键服务器,点击属性,随后选择安全性,将windows身份验证改为sql sever和windows身份验证模式。点击确定即可。

image.png

image.png

随后依次展开 服务器->安全性->登录名->sa , sa是默认的用户,设置密码。(记住这个密码一会儿要用到)

image.png

输入密码后,再点击左边的 状态,然后将权限设置为 授予和启用,点击确定退出即可。

image.png

telnet服务

开启Telnet客户端

image.png

开启服务,右键此电脑--管理--服务和应用程序--服务

image.png

重启SQLserver服务

image.png

打开cmd输入telnet 127.0.0.1 1433(注意防火墙问题引起的连接失败),连接成功(此步不成功会影响到后面JAVA连接数据库)

image.png

IntelliJ IDEA配置

添加库文件

image.png

image.png

测试连接

image.png

测试代码(注意修改自己的数据库名称和密码)

import java.sql.Connection;
import java.sql.DriverManager;

public class HelloWorld {
    public static void main(String[] args) {
        String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=Student";//数据库名称
        String userName = "sa"; //数据库账号
        String userPwd = "123"; //数据库密码
        try {
            Class.forName(driverName);
            Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
            System.out.println("数据库连接成功!");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.print("数据库连接失败!");
        }
    }
}

数据库操作

任务要求1

1、在Student数据库创建Stu数据表,按照下图的列名,数据可自行填充,要求至少有两个专业的人数大于等于3:

如果学生的专业含“计算机”或者“通信”显示热门,若含”化学“或者”生物“,显示冷门,否则显示一般。用SQL脚本创建存储过程查询学生人数大于x的热门专业的专业名称,人数,专业热度,当查到符合条件的结果后,返回0,若查不到结果,返回-1. 并执行存储过程查询x为2的结果。

实现过程

创建数据库

use Student

create table Stu 
(
	学号 char(20) not null,
	专业 char(20) not null,
	性别 char(2) not null,
	年龄 int not null,
	姓	char(20) not null,
	名  char(20) not null
)
insert into Stu values
('10001','数媒','男','30','梅','西'),
('10002','计算机科学与技术','男','18','费','德勒'),
('10003','计算机软件','男','21','勒','布朗.詹姆斯'),
('10004','通信工程','男','19','库','里'),
('10005','会计学','男','22','詹','姆斯.哈登'),
('10006','化学','男','19','邓','肯'),
('10007','生物','男','26','丘','光国'),
('10008','通信工程','男','29','蒋','辰博'),
('10009','化学','男','20','马','思'),
('10010','化学','女','25','殷','栋之'),
('10011','数媒','女','24','丁','广'),
('10012','通信工程','女','22','王','一'),
('10013','数媒','男','24','张','四'),
('10014','通信工程','男','22','张','三'),
('10015','计算机软件','男','22','王','二'),
('10016','计算机软件','女','23','李','一'),
('10017','计算机科学与技术','男','22','张','二')

创建存储过程

use Student
go
create proc message
@x int
as begin
declare @num int
select @num = count(*) from Stu group by 专业 having count(*)>@x
if  (@num>=1)
begin
select case when 专业 like '%计算机%' or 专业 like '%通信%' then '热门'when 专业 like '%化学%' or 专业 like '%生物%' then '冷门'else  '一般'end as '专业热度',count(*) as 人数,专业 from Stu group by 专业 
having count(*)>@x
	return 0
end
else
	return -1
end

执行存储过程

declare @count int
exec  @count=message @x=2	--修改这个参数就行
select @count as 返回结果

当x=2时

image.png

当x=4时

image.png

任务要求2

2、用Java或VC或Android或Hadoop或你会用的任何编程工具,写代码。要求:调用SQL语句访问SQL Server中已经建好的数据库Student,完成第1题中查询询学生人数大于2的热门专业的专业名称,人数,专业热度

1)提交代码和结果截图。

2)解释你所用的工具中每一条对数据库操作的语句的工作过程。

3)并记录在配置过程中遇到的错误以及解决的过程。供参考:Java操作的步骤如下:

步骤1、安装JDK;

步骤2、下载JDBC;

步骤3、在JAVA中程序中实现与数据库的连接;

步骤4、执行查询的SQL语句;

步骤5、显示查询结果。

实现过程

import java.sql.*;

public class HelloWorld {
    public static void main(String[] args) {
        String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=Student";
        String userName = "sa";
        String userPwd = "123";
        Connection con;
        Statement stmt;
        ResultSet rs;
        String sqlStr = "select case when 专业 like '%计算机%' or 专业 like '%通信%' then '热门'when 专业 like '%化学%' or 专业 like '%生物%' then '冷门'else  '一般'end as '专业热度',count(*) as '人数',专业 from Stu group by 专业 having count(*)>2";
        try {
            Class.forName(driverName);
            System.out.println("类实例化成功!");
            con = DriverManager.getConnection(dbURL, userName, userPwd);
            System.out.println("创建连接对象成功!");
            stmt = con.createStatement();
            System.out.println("创建Statement成功!");
            rs = stmt.executeQuery(sqlStr);
            System.out.println("操作数据表成功!");
            System.out.println("___________________________");
            System.out.println("专业热度   人数      专业");
            while (rs.next()) {
                System.out.print(rs.getString("专业热度").trim() + "      ");
                System.out.print(rs.getString("人数").trim() + "         ");
                System.out.print(rs.getString("专业").trim());
                System.out.println("\r");
            }
            rs.close();
            stmt.close();
            con.close();

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

    }
}

image.png

主要操作过程:
1.加载驱动程序:Class.forName(driverName);
2.获得数据库连接 :Connection con = DriverManager.getConnection(dbURL, userName, userPwd);
3.创建Statement : Statement stmt = con.createStatement();
4.调用SQL语句:ResultSet rs = stmt.executeQuery(sqlStr);
5.对返回的结果集进行后续的操作

posted @ 2022-05-21 15:50  、晚风、  阅读(612)  评论(0编辑  收藏  举报