我用的tomcat数据池连的数据库,数据库是sql server 2000,配置好了所有的东东后面写了一个jsp页面来测试读数据库的数据。
代码如下:
<!--测试数据源-->
 <%@ page contentType="text/html; charset=gb2312" %>
 <%@ page import="javax.naming.Context" %> 
 <%@ page import="javax.sql.DataSource"%> 
 <%@ page import="javax.naming.InitialContext"%> 
 <%@ page import="java.sql.*"%>  <% 
   DataSource ds = null; 
   try{ 
     Context initCtx = new InitialContext(); 
     Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
    //从Context中lookup数据源。
     ds = (DataSource)envCtx.lookup("jdbc/jspdev"); 
if(ds!=null) 
{
out.println("已经获得DataSource!"); 
out.println("<br>");
Connection conn = ds.getConnection();
Statement stmt=conn.createStatement();
ResultSet rst=stmt.executeQuery("SELECT ClassId FROM TreeMenu");
out.println("以下是从数据库中读取出来的数据");
while(rst.next())
{
out.println("ClassId:"+rst.getString("ClassId"));
out.println("<br>");
}
}
else 
 out.println("连接失败!"); 
}
catch(Exception ne)
{
 out.println(ne);

 %> 
运行的结果如下:已经获得DataSource! 
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'TreeMenu' 无效说明已获得了数据源了啊,为什么还会“无效”呢!
大家有什么高见!

解决方案 »

  1.   

    打印出来看看是否有结果,如果得到的connection 为空你不是就得不到connection 连接吗?有的话就是你的数据库里或表里有问题
      

  2.   

    你的数据库连接配置文件只是配置到了数据库,没有具体到数据名本身,如在SQL SERVER中存在DB1,DB2,而你的表TreeMenu在DB2,此时,因你的配置文件没有具体到DB2,就会找不到该表,解决的方法有在配置文件中具体到DB2,或者在SQL语句中加上数据库名,如:SELECT ClassId FROM DB2.TreeMenu。建议彩前一种解决的方法。