由于系统需求最近在开发过程中将系统从原来的MySQL转移到SQL 下其中遇到了诸多问题花费了我不少时间现在把我的经验拿出来告诉大家好让大家少走弯路节约时间
首先是SQL 数据库的安装问题在此我主要讲些关于SQL 的版本与操作系统的兼容性问题SQL 总共有个不同版本适应不同等级用户的需求我试了一下在XP系统下只有个人开发版能正常安装而不出现错误所以大家在安装时要注意具体安装时的配置参照相关说明就可以了
下面说明如何连接到SQL 数据库首先当然是要下载JDBC驱动程序最好去微软官方网站下载然后将下载到的三个JAR包放入你的WEB应用的WEBINF/lib/下接下来编写程序进行测试
/***********************************************
/*
/*DBTestjava
/*
/******************************************* */
import javasql*;
public class DBTest {
Connection con;
Statementsta;
ResultSetrs;
String driver;
String url;
String user;
String pwd;
public DBTest()
{
driver = commicrosoftjdbcsqlserverSQLServerDriver;;
url= jdbc:microsoft:sqlserver://localhost:;DatabaseName =test;
//test为数据库名
user = sa;
pwd= sa;
//请更改为你相应的用户和密码
init();
}
public void init()
{
try{
ClassforName(driver);
Systemoutprintln(driver is ok);
con = DriverManagergetConnection(urluserpwd);
Systemoutprintln(conection is ok);
sta = concreateStatement();
rs= staexecuteQuery(select * from room);
while(rsnext())
Systemoutprintln(rsgetInt(roomNum));
}catch(Exception e)
{
eprintStackTrace();
}
}
public static void main(String args[])//自己替换[]
{
new DBTest();
}
}
按道理讲上边这段代码应该没错可首先我们来看一下如果sqlser服务器没有升级到sp(在使用jdbc时如果系统是xp或者务必要把sqlserver 升级到sp往上到处都有下的)我们看看运行结果
driver is ok
javasqlSQLException: [Microsoft][SQLServer Driver for JDBC]Error establis
hing socket
at commicrosoftjdbcbaseBaseExceptionscreateException(Unknown Source)
at commicrosoftjdbcbaseBaseExceptionsgetException(Unknown Source)
at commicrosoftjdbcbaseBaseExceptionsgetException(Unknown Source)
at commicrosoftjdbcsqlservertdsTDSConnection<init>(Unknown Source)
at commicrosoftjdbcsqlserverSQLServerImplConnectionopen(Unknown Source)
at commicrosoftjdbcbaseBaseConnectiongetNewImplConnection(Unknown Source)
at commicrosoftjdbcbaseBaseConnectionopen(Unknown Source)
at commicrosoftjdbcnnect(Unknown Source)
at javasqlDriverManagergetConnection(DriverManagerjava:)
at javasqlDriverManagergetConnection(DriverManagerjava:)
at DbTestinit(DbTestjava:)
at DbTest<init>(DbTestjava:)
at DbTestmain(DbTestjava:)
Press any key to continue
出现上边错误的主要原因是默认的数据库服务器端口 没有打开无法直接连接
如果升级到sp则这个问题可以结决我们再来看看升级之后程序运行的结果
driver is ok
conection is ok
javasqlSQLException: [Microsoft][SQLServer Driver for JDBC][SQLServer]对象名 room 无效
at commicrosoftjdbcbaseBaseExceptionscreateException(Unknown Source)
at commicrosoftjdbcbaseBaseExceptionsgetException(Unknown Source)
at commicrosoftjdbcsqlservertdsTDSRequestprocessErrorToken(UnknownSource)
at commicrosoftjdbcsqlservertdsTDSRequestprocessReplyToken(UnknownSource)
at commicrosoftjdbcsqlservertdsTDSExecuteRequestprocessReplyToken(Unknown Source)
at commicrosoftjdbcsqlservertdsTDSRequestprocessReply(Unknown Source)
at commicrosoftjdbcsqlserverSQLServerImplStatementgetNextResultType(Unknown Source)
at commicrosoftjdbcbamonTransitionToState(UnknownSource)
at commicrosoftjdbcbaseBaseStatementpostImplExecute(Unknown Source)
at commicrosoftjdbcbamonExecute(Unknown Source)
at commicrosoftjdbcbaseBaseStatementexecuteQueryInternal(Unknown Source)
at commicrosoftjdbcbaseBaseStatementexecuteQuery(Unknown Source)
at DbTestinit(DbTestjava:)
at DbTest<init>(DbTestjava:)
at DbTestmain(DbTestjava:)
Press any key to continue
在这儿用户已经登陆上去但是却不能访问里边的数据表出现这个问题的原因在于sa用户为系统用户它虽然能够登陆数据库但是test数据库里边却没有这个用户的访问权限所以我们现在为这个数据库重新建立一个用户
share 建立过程如下在test数据库中选重用户 〉新建用户 〉名称选择(这一步中有两个关键点 身份验证选sql身份验证默认数据库选test)〉建立新教色share 此时更改程序将用户登陆名和密码修改一下重新运行程序
driver is ok
conection is ok
Press any key to continue
这次顺利通过测试
哈哈其实这些小问题花了我一个晚上才解决真是浪费时间所以写下来希望能使遇到类似问题的朋友不要重蹈覆辙在此提醒大家遇到问题时多上网查查多在论坛里问问这样你学到的会更多更节省时间更有效率
总结sqlserve 和jdbc 的融合问题关键涉及到sp补丁(端口开放)还有用户问题解决这两个问题之后剩余的便是sqlserver 操作问题了还有一点在远程操作的时候要把sqlserver 组设置一下在安全性里边亦将身份验证更改为sqlserve 验证即可