在刚刚接触使用JDBC连接数据库时,总会碰到很多问题,让人无所适从。所以,笔者以SQL Server
为例,详细讲解如何使用JDBC连接SQL Server。下载请点击SQL Server 2017、SQL Server 2016
在开始之前,请先正确安装SQL Server和Tomcat。(笔者是以SQL Server 2017和Tomcat9.0.1进行演示)
准备:在正确安装SQL server和Tomcat之后,打开cmd,运行指令“telnet 127.0.0.1 1433”,如果出现
“telnet不是内部指令或程序......”说明你没有打开telnet服务,那么请参考笔者另一篇博客“打开telnet服务问题”
如果正确打开telnet服务,但是运行上述telnet指令,出现“无法连接127.0.0.1,端口1433......”,则说明要对SQL
Server进行配置,接下来就是详细的配置过程。
第一步:使用键盘快捷键“window+x”选择“计算机管理”或者直接使用SQL Server配置管理器,如图:
第二步:打开的窗口如下图所示。在左边栏找到 SQL Server网络配置选项,点开它的小箭头,会
看到“【你的数据库名】的协议” ,选中它,看右边栏。如图:
第三步:如果Named Pipes 未启用,则右键→启用,右键单击 TCP/IP,选择 启用,双击TCP/IP
(右键→属性),在弹出的窗口中选择 “IP地址” 选项卡,将IP1和IP10的【IP地址】设为127.0.0.1,
并将所有【IPx】的【已启用】设为是。接着,拖动下拉条到最下方,将 IPAll 中的【TCP端口】设
成 【1433】,其余不变。如图:
第四步:重新启动计算机,接下来使用telnet命令“telnet 127.0.0.1 1433”测试1433端口是否打开。
第五步:环境变量CLASSPATH配置:下载JDBC,然后在D盘新建一个文件夹,命名为sqljdbc4,将
sqljdbc42.jar复制一个进去。
第六步:右击 我的电脑 → 属性 → 高级系统设置(高级) → 环境变量,在系统变量中双击
CLASSPATH变量(或选中CLASSPATH后 → 编辑),在最后面追加 “;D:\sqljdbc42\sqljdbc42.jar”
(注意最前面有个 ; )若不存在CLASSPATH,就新建CLASSPATH变量,并且将其值设
为“D:\sqljdbc42\sqljdbc42.jar”。连续点击 确定 以退出环境变量配置。
第七步:(非常重要)我们需要将sqljdbc4.jar类库文件拷贝到D:\Java Tools\jdk1.7.0\jre\lib\ext目
录下。(看你安装在哪个盘,如果是C盘,则最前面的D改为C,下同)。
我们需要将sqljdbc42.jar类库文件拷贝到D:\Program Files\Java\jre7\lib\ext目录下最好是,只要
是jre文件夹,都复制一个sqljdbc42.jar到jre7\lib\ext里去!!
如果是使用Tomcat做服务器(我使用的是Tomcat7),那么我们需要将sqljdbc42.jar类库文件
拷贝到D:\Tomcat_9.0.1\lib目录下。
第八步:打开SQL Server 2017,在其中新建数据库 Test,然后退出SQL Server2017。
运行Eclipse,新建一个JavaProject 名为 Test。右单击src,依次选择 Build Path → Configure Build Path,在
打开的窗口的右边选择 Libraries标签,然后单击 Add External JARs,找到 sqljdbc42.jar 文件并打
开,然后单击 OK 完成构建路径的配置。如图:
最后:输入代码测试
importjava.sql.*;
publicclass Main {
publicstatic void main(String [] args)
{
StringdriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
StringdbURL="jdbc:sqlserver://localhost:1433;DatabaseName=你的数据库名";
String userName="填写你的用户名,我的是sa";
String userPwd="填写你的密码";
try
{
Class.forName(driverName);
ConnectiondbConn=DriverManager.getConnection(dbURL,userName,userPwd);
System.out.println("连接数据库成功");
}
catch(Exception e)
{
e.printStackTrace();
System.out.print("连接失败");
}
}
}