用JDBC编程的运行时错误及其解决大全--转载http://www.th7.cn/Program/java/201409/274583.shtml

用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:鼠标右击项目名-〉选择构建路径-〉配置构建路径-〉选择库

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

%20

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

%20<IMG%20SRC="HTTP: img0.tuicool.com V7NV7f.png? />

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用户密码。

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  b ook 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  b ook where bookId=?"; 代码改

为 String sqlStr = "select * from  b ook 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" );

时间: 2024-08-02 07:22:19

用JDBC编程的运行时错误及其解决大全--转载http://www.th7.cn/Program/java/201409/274583.shtml的相关文章

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

用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

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

用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 错误描写叙

Mybatis解决了JDBC编程哪些问题

一:Mybatis简介 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statement.手动设置参数.结果集检索等jdbc繁杂的过程代码. (1)Mybatis通过xml映射文件或注解的方式将要执行的各种statement(内含sql语句)配置起来: (2)通过java对象(输入)和statement中的sql进行映射生成最终执行的sql语句: (3)最后由myb

JDBC编程的方式

JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 从上面可以看出JDBC编程一般要如下步骤: 1. 加载数据库驱动 2. 创建并获取数据库连接 3. 创建jdbc statement对象 4. 设置sql语句 5. 设置sql语句中的参数(使用preparedStatement) 6. 通过statement执行sql并获取结果 7. 对sql执行结果进行解析处理 8. 释放资源(resultSet.preparedstatement.connection) 可以看出所有的

02Mybatis_原生态jdbc编程中的问题总结——从而引生出为什么要用Mybatis

我们先用jdbc去编写一个例子: 第一步:建表 1 /* 2 SQLyog v10.2 3 MySQL - 5.1.72-community : Database - mybatis 4 ********************************************************************* 5 */ 6 7 8 /*!40101 SET NAMES utf8 */; 9 10 /*!40101 SET SQL_MODE=''*/; 11 12 /*!40014

JavaWeb-17 (JDBC编程进阶2)

JavaWeb-17 JDBC编程进阶2 一.自定义框架 习惯:搞工具类尽量写多些注释 开始制定框架 项目架构: c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.jdbc.Driver</pro

1Mybatis入门--1.1单独使用jdbc编程问题总结

1.1.1 jdbc程序 Public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); //通过驱动管理类获取数据库链接 connection = Dri

第十三章.MySQL数据库与JDBC编程(下)

JDBC的典型用法: JDBC4.2常用接口和类简介: DriverManager:用于管理JDBC驱动的服务类,程序中使用该类的主要功能是获取Connection对象,该类包含如下方法: public static synchronized Connection getConnection(String url, String user, String  pass) throws SQLException:该方法获得url对应数据库的连接 Connection:代表数据库连接对象,每个Conn

JDBC编程步奏、问题总结(一)

jdbc编程步骤: 1. 加载数据库驱动 2. 创建并获取数据库链接 3. 创建jdbc statement对象 4. 设置sql语句 5. 设置sql语句中的参数(使用preparedStatement) 6. 通过statement执行sql并获取结果 7. 对sql执行结果进行解析处理 8. 释放资源(resultSet.preparedstatement.connection) jdbc问题总结如下: 1. 数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可