数据库_JDBC_连接SQL Sever 常见Bug

时间:2022-06-19 11:51:24

 课程设计的第一步:
 用户登陆模块:就这个小模块把我整死了,出现的问题一个接着一个,最主要的就是数据库连接.
 
 question1.
 java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
 异常原因:没有导入导驱动包sqljdbc.jar.

 question2.
 com.microsoft.sqlserver.jdbc.SQLServerException: 没有为集成身份验证配置驱动程序
 异常原因:打sqlserver2005的sp3的补丁,然后将数据库设置为用windows+sqlserver双重验证。

 question3.
 java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 ‘xxx’ 无效
  异常原因:访问数据库的用户有登录权限,但无操作表的权限
 解决办法:
 1. 在[企业控制台]窗口–[树]子窗口–[安全性]子树–[登录]项里将你使用的登陆用户的默认数据库设为你所使用的数

据库。
 2. 在[企业控制台]窗口–[树]子窗口–[安全性]子树–[登录]项里新增一个登录用户(在其中选择SQL Server 身份验证

、服务器角色和要访问的数据库),以后便可用些新增用户访问你勾选的数据库了。

 question4.
 java.sMS-sql 2005 ''xxx'' (数据库 ''xxx'',架构 ''dbo'')的 SELECT 权限
 异常原因:Sql server 2005 默认设置下不允许远程登陆 
 1 外围设置 tcp/ip 和 named pipe 同时启用 
 2 服务器 --〉属性 --〉安全性 --〉sql server 和windows 认证模式 ,数据库(xxx) --->安全性---->架构---->dbo(属

性)--->权限--->添加--->浏览--> 
 [public]---->具有授予权限(select)

 question5.
 java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor

position.
 异常原因:ResultSet实例res没有移动指针位置。一个ResultSet指针最初的位置在第一条记录之前,第一次调用next方法 

使第一条记录处于当前位置,第二次调用next方法,使第二条记录处于当前位置。

question6.

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]No ResultSet set was produced

异常原因:No ResultSet was produced是没有生成记录集,通常在executeQuery(sql)的时候如果是sql为更新、删除或者插入的时候,

就不能用 ResultSet rs=aq.executeQuery(sql);而直接用executeQuery;因为没有生成记录集

executeQuery(sql)是返回一个ResultSet类型,而ResultSet 又是A table of data representing a database result set ,

该异常是修改了数据库但是没有得到返回对象的错误,而executeUpdate是int类型的,