注册 登录
编程论坛 J2EE论坛

[求助]急!!连接SQL2000数据库的问题

梧桐 发布于 2007-03-21 15:03, 2436 次点击


请教一下:
前两天开始做jsp连接数据库的测试,总提示空指针的错误!!

我想问的是如果用JDBC-ODBC桥接方式连接SQL数据库用单独安装驱动程序吗?

书上说tomcat和JDK都带有jdbc.odbc.JdbcOdbcDriver这个驱动,可是我测试的时候总也不能连接成功!!

还有我在管理工具里配置好了数据源(配置的时候测试成功了的),连接的时候报错 :未发现数据源名称并且未指定默认驱动程序


代码:

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%
//加载jdbc-odbc驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//通过数据源连接:
String url ="jdbc:odbc:try";

Connection conn = DriverManager.getConnection(url);
Statement stmt=conn.createStatement();

<%
ResultSet RS= Stmt.executeQuery("SELECT * FROM EMPLOYEE WHERE eage<25"); /*连接到数据库中的表EMPLOYEE上*/
String tt;
out.print("<table border=2 style=color:blue >");
while (RS.next()) {
out.print("<tr><td>");
tt = RS.getString("ename"); /*查询表中NUM字段的内容,字段内容可能使数组,默认列输出*/
out.print(tt);
out.print("</td><td>");
tt = RS.getString("esex");
out.print(tt);
out.print("</td><td>");
tt = RS.getString("eage");
out.print(tt);
out.print("</td><td>");
tt=RS.getString("egrade");
out.print(tt);
out.print("</td><td>");
}
out.print("</table>");
RS.close();
out.println("数据查询成功!");
%>

<%
Rs.close();
stmt.close();
conn.close();
%>
</body>
</html>



错误信息:

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Exception in JSP: /test1.jsp:5

2: <%@ page import="java.sql.*"%>
3: <html>
4: <body>
5: <%
6: //加载jdbc-odbc驱动程序
7: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
8:


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

javax.servlet.ServletException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.test1_jsp._jspService(test1_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
org.apache.jsp.test1_jsp._jspService(test1_jsp.java:53)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.5.23

33 回复
#2
千里冰封2007-03-21 15:06
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

你认为这个信息还不够详细么?
#3
梧桐2007-03-21 15:21


我不是太明白错误的提示!!

未发现数据源名称
我在管理工具里配置好了数据源了!!怎么会有这个错误呢??

未指定默认驱动程序
数据库的默认驱动程序??配置好了数据源,还要怎么指定默认驱动程序??

千里能不能说详细一点!!

#4
angeloc2007-03-21 15:41


就是你配置数据源有问题,这没什么可详细说了。

#5
梧桐2007-03-21 16:36

谢谢指教了!!
我再看看书!争取能连接好!!
谢谢各位的指点!!
#6
梧桐2007-03-21 17:40


我还是觉得数据源配置没什么问题
难道是我装的SQL2000数据库的问题??
有没有朋友用SQL2000,说说比较容易出错的配置数据源步骤!!
谢谢!!

#7
angeloc2007-03-21 17:43
我学习的时候也一直用SQL2000,没出过错,帮不了你。。。
你还不如说说你怎么配置的,也许大家能帮你看看。
我觉得你找个人帮你配置一次比较方便。。。
#8
梧桐2007-03-21 18:07
我是这样配置的:
管理工具->数据源->添加
然后选了驱动程序,默认数据库等操作!!

只有本站会员才能查看附件,请 登录



只有本站会员才能查看附件,请 登录



#9
梧桐2007-03-21 18:10
还有一个图片是:
只有本站会员才能查看附件,请 登录

#10
梧桐2007-03-21 18:11

应该就这些了,try是我用那个数据源~~
帮忙看看还缺什么没配置好!!
#11
风月_无边2007-03-21 18:26

测试都成功了,应该不会有问题了 !!

#12
梧桐2007-03-21 20:04

可是在jsp页面测试的时候有错误:
java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

我也不知道到底是怎么回事??

#13
时空之蕊2007-03-21 20:54
大家好!这个是因为odbc的驱动没有啊!
copy驱动到tomcate的lib下就可以了
sun.jdbc.odbc.JdbcOdbcDriver
copy相应驱动就可以了
何必呢!jdbc竟然用odbc桥,性能地下不说,而且还不能使用某些sql特性!建议直接使用驱动

[此贴子已经被作者于2007-3-21 20:57:05编辑过]

#14
梧桐2007-03-21 22:01
谢谢提醒!!
书上说sun.jdbc.odbc.JdbcOdbcDriver驱动是JDK和tomcat自带的?

原来jdbc用odbc桥性能不好呀?
我刚学这个,不太了解!!~~

#15
梧桐2007-03-21 22:04
sun.jdbc.odbc.JdbcOdbcDrive驱动一般在JDK什么目录下呢???
我还真没找到它
#16
sailyyang2007-03-22 09:10

你觉得 你的数据库连接语句正确吗
Class.forName("sun.jdbc.odbc.jdbcOdbcDriver");
connection con=DriverManager.getConnection("jdbc:odbc:mydatasource",user,password);
你没指定用户名和密码 当然会出错拉.........

#17
angeloc2007-03-22 09:29
以下是引用sailyyang在2007-3-22 9:10:36的发言:

你觉得 你的数据库连接语句正确吗
Class.forName("sun.jdbc.odbc.jdbcOdbcDriver");
connection con=DriverManager.getConnection("jdbc:odbc:mydatasource",user,password);
你没指定用户名和密码 当然会出错拉.........

有道理!

#18
时空之蕊2007-03-22 10:13

D:\java\jdk1.5.0_07\jre\lib\rt.jar
这个包里面,你的应用程序,或者tomcat的classpath中没有这个包吧

#19
时空之蕊2007-03-22 11:37
javax.servlet.ServletException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
调试是编程永远的硬道理
这一句就说明肯定是jdbc驱动包的问题
#20
千里冰封2007-03-22 12:19
到现在还没有发现是错在哪里了吗?

你把你捕获到的所有异常输出一下就可以看到了,到底是哪一句话导致了什么样的异常
#21
梧桐2007-03-22 12:48
以下是引用sailyyang在2007-3-22 9:10:36的发言:

你觉得 你的数据库连接语句正确吗
Class.forName("sun.jdbc.odbc.jdbcOdbcDriver");
connection con=DriverManager.getConnection("jdbc:odbc:mydatasource",user,password);
你没指定用户名和密码 当然会出错拉.........

我实验的时候没有设置用户名和密码,用的是windows身份验证~~

#22
梧桐2007-03-22 12:50
以下是引用时空之蕊在2007-3-22 10:13:31的发言:

D:\java\jdk1.5.0_07\jre\lib\rt.jar
这个包里面,你的应用程序,或者tomcat的classpath中没有这个包吧

我重新设置了环境变量!!
还是不行的!!~~

#23
梧桐2007-03-22 12:55
以下是引用千里冰封在2007-3-22 12:19:35的发言:
到现在还没有发现是错在哪里了吗?

你把你捕获到的所有异常输出一下就可以看到了,到底是哪一句话导致了什么样的异常

测试没有连接数据库的页面都能正常显示!!
应该是数据库驱动的问题!!
代码中
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
没有成功加载驱动程序!!
我原来以为用jdbc-odbc桥是最简单的连接方式,没想到还很不简单!!
起码对我来说,不简单!!

谢谢各位!!
我会加油的!!~~~

#24
时空之蕊2007-03-22 12:57
郁闷,你设置变量没有用,必须copy到web-inf/lib或者tomcate的lib下
#25
梧桐2007-03-22 13:01
以下是引用时空之蕊在2007-3-22 10:13:31的发言:

D:\java\jdk1.5.0_07\jre\lib\rt.jar
这个包里面,你的应用程序,或者tomcat的classpath中没有这个包吧

我在D:\Java\jdk1.5.0_10\jre\lib有看到rt.jar包
但是在
D:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib
中没有看到rt.jar包,程序中的错误和这个有关系吗??

#26
梧桐2007-03-22 13:08
以下是引用时空之蕊在2007-3-21 20:54:45的发言:
大家好!这个是因为odbc的驱动没有啊!
copy驱动到tomcate的lib下就可以了
sun.jdbc.odbc.JdbcOdbcDriver
copy相应驱动就可以了
何必呢!jdbc竟然用odbc桥,性能地下不说,而且还不能使用某些sql特性!建议直接使用驱动

copy驱动到tomcate的哪个lib呢??

  D:\Program Files\Apache Software Foundation\Tomcat 5.5\是没有lid文件夹的呀??


  D:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib
还是
  D:\Program Files\Apache Software Foundation\Tomcat 5.5\server\lib

#27
梧桐2007-03-22 13:25
以下是引用时空之蕊在2007-3-22 12:57:22的发言:
郁闷,你设置变量没有用,必须copy到web-inf/lib或者tomcate的lib下

我把D:\Java\jdk1.5.0_10\jre\lib下的rt.jar
copy到D:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\WEB-INF\lib下了
是这样么??

可是好像还是不行的!!~~~

#28
风月_无边2007-03-22 13:35

路径设置好了,桥接应该就没问题了 

#29
angeloc2007-03-22 17:33
所以我说最简单方法是找个人帮你配置一次你就会了。
#30
梧桐2007-03-22 17:42
以下是引用angeloc在2007-3-22 17:33:17的发言:
所以我说最简单方法是找个人帮你配置一次你就会了。

呵呵~~
我也想,就是还没找到!!

#31
angeloc2007-03-22 17:44
找个离你加近网速快的远程一下!
#32
梧桐2007-03-22 18:05
谢谢提醒~~
#33
时空之蕊2007-03-22 21:23
以下是引用梧桐在2007-3-22 13:25:22的发言:

我把D:\Java\jdk1.5.0_10\jre\lib下的rt.jar
copy到D:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\WEB-INF\lib下了
是这样么??

可是好像还是不行的!!~~~

我看还是没有搞清楚这些目录的含义阿:
1。tomcate的D:\Apache Software Foundation\Tomcat 5.5\common\lib下为tomcate的类加载器加载,也就是说所有应用的根类加载加载的目录,也就是说所有的应用都可以使用这个目录下的jar包
2。yourwebroot\web-inf\lib这个目录是仅仅只是你的应用的类加载器的加载目录,也就是说其他应用不能够使用你的程序jar包了

#34
梧桐2007-03-22 22:27
回复:(时空之蕊)
多谢指教!!~~
1