连接异常处理方式和步骤
1 驱动是否注册,sqljdbc.jar包是否添加到构建路径lib目录下,若没有,添加后进行测试。如果添加了,检查有单词无书写错误(多写字母或少些字母)。
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:xxx;DatebaseName=数据库名;user=用户名;password=*****");
xxx代表数据库设置的端口号,*****代表数据库密码(帮助文档提示的url没有端口号和数据库名,我在加上以后连接成功!)
2 端口号是否和数据库设置一致。
3 数据库名、用户名和密码是否正确。
4 检查SQLserver2005的TCP协议是否启用,如果没有,设置为启用,远程连接是否启用,没有则启用。在SQL Server Configuration Manager和SQL Server 外围应用配置器中进行相关设置。
自己在这个项目中遇到的异常和常见异常的总结
首先根据Tomcat中的错误代码确定造成异常的原因和代码所在的范围。下面列举的异常的解决步骤对应上面序号
1 没有适合的DriveManage
2 空指针异常(有关数据库连接的)
3 数据库连接失败
在以上的步骤都是在之前的没问题的基础之上的
4 对象名无效 列名 'sname' 无效。com.microsoft.sqlserver.jdbc.SQLServerException:
造成这个异常的原因的可能有一下原因引起的
1 查询语句有单词书写错误,和表中列名、表名不一致
2 所查询的内容不存在于使用的数据库中或是几个表交叉错误
如果上边所说两个都没错误,还是报对象名不存在可以尝试以下方法
修改 SQL 语句:
sql = "SELECT * FROM Lperson WHERE name=? and password=?";
改成
sql = "use [数据库名] SELECT * FROM Lperson WHERE name=? and password=?";
在你的sql语句前加上use[数据库名]应该就能解决了
5. com.microsoft.sqlserver.jdbc.SQLServerException 将截断字符串或二进制数据问题
字段长度超出了定义的字段长。
SQL 异常的排错小技巧:程序中的sql语句现在数据库中运行,查看是否正常,如果不能正常运行,根据提示进行修改,如此反复,知道能正常运行,如果数据库中可以正常运行,在java程序控制台中输出sql语句,看是否和自己要用的语句有什么区别。对列名、字段名无效的异常特别有效。什么错误就一清二楚了