最近老师让我们用JDBC使用SQLserver,但是她给的SQLserver版本号太老了,而且在win10上会出现很多问题,所以我写下这篇文章记录一下。
安装SQLserver 我用的是SQLserver 2017 express,企业版要收费,但是这个是免费的。在官网上可以下载:https://www.microsoft.com/zh-cn/sql-server/sql-server-editions-express 下载完运行是这样的: 选择自定义
选择文件夹安装,安装完了之后又弹出这个或者在安装玩完的目录下找到setup.exe
打开后是这样:
点击第一项:
一步一步往下
这个页面可以勾选你需要安装的功能
这里可以用默认实例,也可以自己命名实例。
这些默认就行,以后也可以改的
这里选择混合模式,并且要设置密码;需要添加管理员,用默认的就行。点击下一步开始安装了。除了安装这个,还需要安装SSMS,就是第三项那个管理工具
连接数据库方式SQL Server
打开SSMS
身份验证方式一定要使用SQL Server 身份认证(使用SSMS管理)
配置网络协议
点击 开始->Microsoft SQL Server 2017->SQL Server2017 配置管理器
IP1和IP10的地址改为127.0.0.1,所有IP的已启用改为是在最下方的IPAll的TCP端口改为1433
然后重启一下电脑
打开控制面板—程序和功能—打开和关闭Windows功能—勾选Telnet服务器和Telnet客户端(win10只有Telnet客户端)
按确定。然后打开cmd(开始->运行->cmd)在cmd里键入telnet 127.0.0.1 1433如果出现以下页面表示1433端口打开成功
我在利用telnet时发现仍然提示:正在连接到。。。。不能打开到主机的连接, 在端口。。。: 连接失败
这是因为现在的win10已经不包含telnet服务端了,只能使用第三方打开Telnet server了。在以下网址下载telnet server:http://www.goodtechsys.com/downloadstelnetnt2000.asp
安装后,打开计算机管理->服务 和应用程序->服务:
发现GoodTech Telnet Server 已经开启,代表它已经可以用了
做完这些后再试一试连接telnet(随便一个IP),发现以上是使用你的计算机的用户名和密码,如果没有就去设一个。
然后连接127.0.0.1 1433成功,1433端口打开成功
最近有人跟我说,做了以上工作后还是在端口连接失败,你可以把你电脑的防火墙关了试试哦(=—=)
安装一个Microsoft SQL Server JDBC 驱动程序 7.0:https://www.microsoft.com/zh-CN/download/details.aspx?id=57175
这是一个压缩文件,下载完之后解压得到一个sqljdbc_7.0文件夹,打开sqljdbc_7.0->chs
把mssql-jdbc-7.0.0.jre10.jar文件复制到C:\Program Files\Java\jdk-11\lib目录下(Java的安装目录)(此步也可不需要)
mssql-jdbc-7.0.0.jre10.jar要求jre9,mssql-jdbc-7.0.0.jre8.jar要求jre8
在C盘下建立一个jar文件夹,把mssql-jdbc-7.0.0.jre8.jar放进去
**右击 我的电脑 -> 属性-> 高级系统设置(高级)-> 环境变量,在系统变量中双击CLASSPATH变量,在最后面追加 “;C:\jar\mssql-jdbc-7.0.0.jre10.jar” **(以上设置环境变量也可不需要)
6. 测试
打开SQL Server 2017,在其中新建数据库 ,然后退出SQL Server 2017打开eclipse,新建一个项目,在项目名上右键->Build Path->Configure Build Path,点击Add External JARS
找到C:\jar\mssql-jdbc-7.0.0.jre8.jar,点apply and close现在可以使用这个库了
新建一个包,新建一个class
运行以下代码
package sjk;
import java.sql.*;
public class Main {
public static void main(String []args) {
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=你的数据库名称";
String userName="sa(你的管理员名称)";
String userPwd="你的密码";
try
{
Class.forName(driverName);
Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("success!");
}
catch(Exception e)
{
e.printStackTrace();
System.out.print("fail!");
}
}
}