用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. URAL1501. Sense of Beauty(记忆化)

    链接 dfs+记忆化 对于当前状态虽然满足和差 但如果搜下去没有满足的情况也是不可以的 所以需要记忆化下 #include <iostream> #include<cstdio> ...

  2. 十个免费的Web压力测试工具

    两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的W ...

  3. ASP.NE的缓存技术提高Web站点的性能

    一:我们为什么要使用缓存? 先来理解一下asp.net缓存技术的基本原理:把访问频繁的数据以及需要花大量的时间来加载的数据缓存在内存中,那么用户在下次请求同样的数据时,直接将内存中的数据返回给用户,从 ...

  4. Repeater实例应用

    在实际开发过程中,涉及到数据绑定,分页,以及一对多展示数据时,遇到这样的需求我们怎么解决呢?下面以帖子展示来逐一说明. 帖子主要由两部分组成,第一部分是发帖人的原创内容部分,第二部分是用户评论部分,这 ...

  5. 干货分享:让你分分钟学会 javascript 闭包

    闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述 ...

  6. Socket编程(九)

    此为网络编程的一个系列,后续会把内容补上.....

  7. I.MX6 bq27441 driver hacking

    /************************************************************************* * I.MX6 bq27441 driver ha ...

  8. Android Material Design简单使用

    吐槽 作为一个 Android developer,没有什么比拿着 UI 设计的一堆 iOS 风格的设计 来做需求更恶心的了,基本所有空间都要照着 iOS 来画一遍,Material Design 辣 ...

  9. C#生成缩略图代码

    /**//// <summary>         /// 生成缩略图         /// </summary>         /// <param name=&q ...

  10. ASP.NET MVC:通过 FileResult 向 浏览器 发送文件

    在 Controller 中我们可以使用 FileResult 向客户端发送文件. FileResult FileResult 是一个抽象类,继承自 ActionResult.在 System.Web ...