用JDBC编程的执行时错误及其解决大全[通俗易懂]

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

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

 用JDBC编程的执行时错误及其解决大全[通俗易懂]

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

用JDBC编程的执行时错误及其解决大全[通俗易懂]

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。

 

 

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”);

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115462.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常用命令详解-Net命令「建议收藏」

    常用命令详解-Net命令「建议收藏」1.Net常用命令:(1)netshare-查看共享命令netshareipc−设置ipc−设置ipc-设置ipc共享netshareipc/del−删除ipc/del−删除ipc/del-删除ipc共享(xp系统无法删除)netsharec$=c:-设置c盘为共享(2)netuser-查看本地的用户列表netuser用户名密码…

    2022年5月8日
    37
  • 快速入门UML时序图「建议收藏」

    快速入门UML时序图「建议收藏」使用UML时序图重构代码使用UML时序图时序图是什么时序图的元素组合块(CombinedFragment)举例使用UML时序图最近,在重构项目中的老代码的时候,业务复杂,文档缺失。抽丝剥茧,沉迷在剪不断理还乱的纷繁的关系中,像是苏东坡诗中的那只高贵的乌鸦先生找不到落脚之处。披沙拣金,终于理出一点头绪,生怕忘了,赶紧记下来,又苦于没有好的方式去表达这些错杂的关系,蓦然发现,UML时序图是表达业…

    2022年6月29日
    34
  • C#-TextBox-登录窗口密码不可见—ShinePans[通俗易懂]

    C#-TextBox-登录窗口密码不可见—ShinePans[通俗易懂]usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceTextB

    2022年7月18日
    13
  • idea202112激活码下载[最新免费获取]

    (idea202112激活码下载)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWNlbnNlSWQi…

    2022年3月25日
    54
  • 关于STM32使用LAN8720A插拔网线重连「建议收藏」

    关于STM32使用LAN8720A插拔网线重连「建议收藏」关于STM32使用LAN8720A插拔网线重连其实在做这个功能的时候大家一定要心平气和,不要认为有多复杂,多看DATASHEET,当然后面会遇到一些问题,所以在踩过坑之后,过了差不多一年了,也算是回过头来做个记录吧。1.关于LAN8720的手册解读通过查阅lan8720的数据收册:标黄部分,在寄存器映射中第一个寄存器为基本状态寄存器,然后我们通过查阅这个寄存器发现,在该寄存器的bit2中说明了,当检测网线插入的时候该位为1,否则为0。知道这个那就好办了,我们可以根据这个状态位去判断网线的接入状

    2022年6月21日
    56
  • NSGA2 Python实现

    NSGA2 Python实现#importingnecessarymodulesimportmathimportrandomimportmatplotlib.pyplotasPlt#FirstFunctiontooptimizedeffunction1(x1,x2):value=-x1*2+x2returnvalue#SecondFunctiontooptimizedeffunction2(x1,x2):value=-x1*5*x2

    2022年5月12日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号