用JDBC编程的执行时错误及其解决

用JDBC编程的执行时错误及其解决

源码:

1、java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver

1.1 错误信息:

1.2 错误描写叙述

1.3 错误解决方法

2、用户 'sa' 登录失败

2.1 错误信息:

2.2 错误描写叙述

2.3 错误解决方法

3、Invalid parameter binding(s)

3.1 错误信息:

3.2 错误描写叙述

3.3 错误解决方法

4、对象名 'jspBook' 无效

4.1 错误信息:

4.2 错误描写叙述

4.3 错误解决方法

5、列名 'bookId' 无效

5.1 错误信息:

5.2 错误描写叙述

5.3 错误解决方法

6、Value can not be converted to requested type

6.1 错误信息:

6.2 错误描写叙述

6.3 错误解决方法

源码:

package edu.ccniit.jspCourse.db.prim;

import java.sql.DriverManager;
import java.sql.SQLException; /**
* 获得指定ID的图书的信息
* @author Administrator
*
*/
public class GetBookByID
{ /**
* @param args
* @throws ClassNotFoundException
* @throws SQLException
*/
public static void main(String[] args) throws ClassNotFoundException, SQLException
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//-----------------------------------------------------------------------------------------
String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433";
java.sql.Connection con = DriverManager.getConnection(dbUrl,"sa","123");
//-----------------------------------------------------------------------------------------
String sqlStr = "select * from jspBook where bookId=?";
java.sql.PreparedStatement pst = con.prepareStatement(sqlStr);
//------------------------------------------------------------------------------------------
pst.setInt(3, 3);
//------------------------------------------------------------------------------------------
java.sql.ResultSet rs = pst.executeQuery();
//------------------------------------------------------------------------------------------
while(rs.next())
{
String book_id = rs.getString("bookId");
String book_name = rs.getString("book_name");
System.out.println(book_id+" "+book_name);
}
pst.close();
con.close(); } }

报错例如以下:

1、java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver

1.1错误信息:

Exception in thread "main" java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Unknown Source)

at edu.ccniit.jspCourse.db.prim.GetBookByID.main(GetBookByID.java:23)

1.2 错误描写叙述

错误信息:SQLServer的JDBC驱动程序类com.microsoft.jdbc.sqlserver.SQLServerDriver无法找到。

造成错误的原因:没有将SQLServer的3个驱动程序文件放到项目的构建路径中。

 1.3错误解决方法

将SQLServer的三个驱动文件放到项目的构建路径中。

操作步骤是:

步骤1:在项目中新建一个名称为lib的文件夹。操作顺序为:

鼠标右击项目名-〉新建-〉目录

步骤2:将数据库驱动的3个文件复制到lib文件夹下,操作顺序为

拷贝数据库取得的3个文件->选择项目中的lib文件夹并单击鼠标右键->选择粘贴

步骤3:鼠标右击项目名-〉选择构建路径-〉配置构建路径-〉选择库

标签项。将打开下面页面:

步骤4:点击加入button,并选择jspCourseExample项目下的lib文件夹中的3个文件,并点击确定button,界面例如以下:

2、用户 'sa' 登录失败

2.1 错误信息:

Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用户 'sa' 登录失败。

at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)

at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)

at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)

at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)

at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)

at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at java.sql.DriverManager.getConnection(Unknown Source)

at edu.ccniit.jspCourse.db.prim.GetBookByID.main(GetBookByID.java:26)

2.2 错误描写叙述

错误信息:用sausername和123password无法登录SQLServer数据库

2.3 错误解决方法

请输入正确的数据库password。假设数据库没有password或password忘记。能够在

SQLServer的企业管理器中的安全中选项中来改动sa用户password。

3、Invalid parameter binding(s)

3.1 错误信息:

Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid parameter binding(s).

at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)

at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.validateParameterIndex(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.setObjectInternal(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.setInt(Unknown Source)

at edu.ccniit.jspCourse.db.prim.GetBookByID.main(GetBookByID.java:32)

3.2 错误描写叙述

错误信息:对SQL语句中的?指定实际数据时出错。通常是将?的序号指定错了,SQL中的?的序号从1開始。而且指定的实际数据的值得类型必须与数据库中相应的列的数据类型,而且要与pst.set×××(…)中×××指定的类型相一致。

3.3 错误解决方法

将pst.setInt(3, 3);代码改为pst.setInt(3, 3);

4、对象名 'jspBook' 无效

4.1 错误信息:

Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'jspBook' 无效。

at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)

at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)

at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)

at edu.ccniit.jspCourse.db.prim.GetBookByID.main(GetBookByID.java:34)

4.2 错误描写叙述

错误信息:代码的34行"select * from jspBook where bookId=?"中,jspBook代表表名,即数据库中并没有名称为jspBook的表。

4.3 错误解决方法

步骤1:一定要确保数据库的URL中一定要有databaseName參数。否则JDBC

连接的就是master库,但master库并非我们要进行操作的数据库。

步骤2:指定好databaseName參数后。查看数据库中是否有名称为jspBook的表。此处应  将jspBook改为正确的表名,即将

String sqlStr = "select * from jspBook where bookId=?";代码改

为String sqlStr = "select * from book where bookId=?";

5、列名 'bookId' 无效

5.1 错误信息:

Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]列名 'bookId' 无效。

at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)

at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)

at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)

at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)

at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)

at com.microsoft.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)

at edu.ccniit.jspCourse.db.prim.GetBookByID.main(GetBookByID.java:34)

5.2 错误描写叙述

错误信息:34行代码将用"select * from  book where bookId=?"查询数据库,当中bookId代表列名,但book表中并没有名称为bookId的列。

5.3 错误解决方法

将jspBook改为正确的表名。即将

String sqlStr = "select * from book where bookId=?";代码改

为String sqlStr = "select * from book where book_Id=?";

6、Value can not be converted to requested type

6.1 错误信息:

Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Value can not be converted to requested type.

at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)

at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)

at com.microsoft.jdbc.base.BaseData.getInteger(Unknown Source)

at com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source)

at com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source)

at edu.ccniit.jspCourse.db.prim.GetBookByID.main(GetBookByID.java:39)

6.2 错误描写叙述

错误信息:39行代码(int book_name = rs.getInt("book_name");)出错。出错的原因是:在book表中。book_name列的数据类型是varchar(40),即 String类型。而代码中要将数据库中String类型转换成int类型,可是在Java中String类型不能自己主动转换成int类型,所以出错。

记住:表中某个字段是什么类型,我们用get×××()方法获得此列的数据时。也应该用相同的类型,否则会报错。

6.3 错误解决方法

int book_name = rs.getInt("book_name");代码改

为String book_name = rs.getString("book_name");

用JDBC编程的执行时错误及其解决大全的更多相关文章

  1. Cocos2d-x执行时错误:Cocos2d: Get data from file(xxx.xxx) failed!

    取资源图片时遇到执行时错误: Cocos2d: Get data from file(xxx/xxx.xxx) failed! 原因是我加入资源目录的方式不正确,例如以下图,我选择的是在Resourc ...

  2. MySQL里创建外键时错误的解决

    --MySQL里创建外键时错误的解决 --------------------------------2014/04/30 在MySQL里创建外键时(Alter table xxx add const ...

  3. CentOS安装redis-audit 但执行时出错未解决 记录一下安装过程

    网上很多安装过程都太老了,测试很多方法终于成功了,但执行时还是出错,哪位熟悉的可以告知一下. yum install -y ruby rubygems ruby-devel git gcc gem s ...

  4. directx11编程中遇到的错误及解决方法

    (2016-05-10)xnamath.h 报错: 在标识符"XMConvertToRadians"的前面 报错如下: >d:\program files\microsoft ...

  5. [原创]记一次java执行段错误及解决过程

    最近一周左右,网管监控系统经常监控到tomcat异常退出,由于有检测tomcat pid的脚本,所以会自动重启服务器,查询tomcat日志没有报错信息,查询系统message日志,可以看到如下信息. ...

  6. HIVE-执行distribute by时报错的解决过程---之如何分析hive执行的错误并解决

    在执行一条HIVE语句的时候报了以下错误,重新检查了所有步骤,重启所有服务,发现没有问题. 但发现一个有趣的事情 1,select sno,sname,sex,sage,sdept from stud ...

  7. RDO远程连接时错误提示解决办法

    RDO远程连接时提示“远程计算机需要网络级别身份验证,而您的计算机不支持该验证,请联系您的系统管理员或者技术人员来获得帮助” 1.先用个人电脑自带远程工具mstsc连接到服务器Windows Serv ...

  8. win7 64 下 VS2008 调试、退出时错误的解决

    最近调试老程序的时候发现原来的VS2008会偶尔在调试C++程序的时候出现程序未响应的情况,开始还以为是个案,后来出现的频率越来越高完全影响心情啊!! 准备花时间解决一下这个问题.网上搜索没有发现任何 ...

  9. IOS -执行时 (消息传递 )

    一 函数调用概述      Objective-C不支持多重继承(同Java和Smalltalk),而C++语言支持多重继承. Objective-C是动态绑定,它的类库比C++要easy操作. Ob ...

随机推荐

  1. 史上最全面的FRM与CFA的区别对比分析,适合新人看

    简单地自我介绍:本人于纽约完成了研究生阶段的学习后,在华尔街混迹了几年的时间,已获取FRM证书,正在积极准备CFA. 上海财经大学FRM培训中心前言导读 经常看到CFA持证人平均年收入为$XXX之类的 ...

  2. git恢复被修改的文件

    恢复到最后一次提交的改动: git checkout -- + 需要恢复的文件名 但是,需要注意的是,如果该文件已经 add 到暂存队列中,上面的命令就不灵光喽 需要先让这个文件取消暂存: git r ...

  3. 函数fsp_seg_inode_page_get_nth_inode

    #define FSEG_ARR_OFFSET (FSEG_PAGE_DATA + FLST_NODE_SIZE) #define FSEG_PAGE_DATA FIL_PAGE_DATA #defi ...

  4. [POJ 2891] Strange Way to Express Integers

    Strange Way to Express Integers Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 10907 ...

  5. HDU 1532 Drainage Ditches 排水渠(最大流,入门)

    题意: 给出一个有向图,以及边上的容量上限,求最大流.(有重边,要将容量上限叠加) 思路: 用最简单的EK+BFS解决.每次搜到一条到达终点的路径,就立刻退出,更新ans,然后再回头修改图中的当前fl ...

  6. ZOJ 2283 Challenge of Wisdom

    题意:在一个n * m的地图里,有p个宝藏,每次只能向横纵坐标增加的方向走,问最少走几次能把宝藏都拿走. 解法:按横坐标排序,纵坐标的一个不下降子序列就是一条合法路径,要求多少条不下降子序列可以覆盖所 ...

  7. 020自动化测试 PK 手动测试

    一.手工测试为什么不可替代 手工测试是不可替代的,因为人是具有很强只能判断能力的,而工具是相对机械缺乏思维能力的东西 工具是人开发出来的 二.手工测试不可替代的表现 测试用例的设计:需要tester有 ...

  8. 关于java环境配置的问题

    在以前刚开始接触Java环境配置问题的时候,配置了一大串的字符串,所有的路径全部在一个path变量里面,特别冗杂. 由于这两天重新再装了一个版本的JDK结果出现毛病了,就只有重新配置该环境变量,结果又 ...

  9. bzoj 1833 [ZJOI2010]count 数字计数(数位DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1833 [题意] 统计[a,b]区间内各数位出现的次数. [思路] 设f[i][j][k ...

  10. English Morphology

    最近参与一个小project,需要编写一个针对英文单词的stem 算法. 1. 最为常见的stem 算法 就是The English (Porter2) stemming algorithm http ...