当前位置: 首页 > news >正文

用JDBC编程的运行时错误及其解决大全

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

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

源代码: 

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

1.1 错误信息: 

1.2 错误描述 

1.3 错误解决方法 

2、用户 'sa' 登录失败 

2.1 错误信息: 

2.2 错误描述 

2.3 错误解决方法 

3Invalid 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 错误解决方法 

6Value 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();
 
}
 
}

报错如下:

1java.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 错误描述

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

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

 1.3错误解决方法

    将SQLServer的三个驱动文件放到项目的构建路径中。操作步骤是:

    步骤1:在项目中新建一个名称为lib的目录,操作顺序为:

            鼠标右击项目名-〉新建-〉文件夹

步骤2:将数据库驱动的3个文件拷贝到lib目录下,操作顺序为

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

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

标签项,将打开以下页面:

 

步骤4:点击添加按钮,并选择jspCourseExample项目下的lib目录中的3个文件,并点击确定按钮,界面如下:


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 错误描述

    错误信息:用sa用户名和123密码无法登录SQLServer数据库

2.3 错误解决方法

    请输入正确的数据库密码,如果数据库没有密码或密码忘记,可以在

SQLServer的企业管理器中的安全中选项中来修改sa用户密码。

 

 

3Invalid 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=?";

 

6Value 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类型,但是在JavaString类型不能自动转换成int类型,所以出错。

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

 

6.3 错误解决方法

  将

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

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

 

 

相关文章:

  • Myeclipse10.7连接SQL Server数据库技术
  • C++构造函数虚函数例题
  • Servlet过滤字符串的HTML特殊字符
  • PHP中print_r、var_export、var_dump区别
  • Jsp/Servlet根据请求参数自动填充Java对象:表单Bean
  • ORACLE 如何定位消耗资源的SQL
  • Servlet/Jsp实现当参数确实或缺失重新显示输入表单
  • Servlet/Jsp实现发送压缩Web页面 Gzip技术
  • Java内存区域与内存溢出
  • 如何删除鼠标右键菜单里的打开按钮
  • Struts2的s:date标签使用详解[转]
  • JSP隐含对象(1)
  • 二级指针的思考
  • JSP隐含对象 request(2)
  • JSP实现网页计算器
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • CODING 缺陷管理功能正式开始公测
  • C语言笔记(第一章:C语言编程)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java的Interrupt与线程中断
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Mysql5.6主从复制
  • PHP 7 修改了什么呢 -- 2
  • spring + angular 实现导出excel
  • Spring Cloud Feign的两种使用姿势
  • unity如何实现一个固定宽度的orthagraphic相机
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 区块链分支循环
  • 全栈开发——Linux
  • 使用 Docker 部署 Spring Boot项目
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 说说动画卡顿的解决方案
  • 我的zsh配置, 2019最新方案
  • 物联网链路协议
  • 一道闭包题引发的思考
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 终端用户监控:真实用户监控还是模拟监控?
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • k8s使用glusterfs实现动态持久化存储
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (6)添加vue-cookie
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (五)Python 垃圾回收机制
  • (转)jdk与jre的区别
  • (转载)hibernate缓存
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .sdf和.msp文件读取
  • @Autowired注解的实现原理
  • @DataRedisTest测试redis从未如此丝滑