在一个系统页面中需要查询另外一个数据库中的数据,所以在原页面 include了一个java ,内容是这样的<%@ page contentType="text/html; charset=utf-8" language="java"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.util.Date" %><%
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = java.sql.DriverManager.getConnection("jdbc:mysql://*.*.*.*:3306/discuz", "root", "*");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 执行SQL查询语句方法,返回结果集对象
String sql = "select * from cdb_posts order by cdb_posts.dateline desc";
Statement stmt = null;
ResultSet rs = null;
try {
stmt= conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}%>
<%
while(rs.next()){
%>
<tr vAlign=top style="cursor:hand" onclick="showDetail(this, '', '');">
  <td height=10 width="10" align="right" valign="bottom">&nbsp;
    <image width="10" height="10" src="/images/arrow.gif" />&nbsp;
  </td>
  <td height=10 align="left" valign="bottom" class="gray-dashed">
<font style="font-size:12px;color:#353535"> &nbsp;&nbsp;
  <%=rs.getString("subject") %>
    </font>
  </td>
  <td height=10 align="right" valign="bottom" class="gray-dashed">&nbsp;
<font style="font-size:12px;color:#353535">
<% Date d = new Date(rs.getTimestamp("dateline").getTime()*1000) ; %>
   [<%= d %>
</font>]
  </td>
  <td width="5">&nbsp;</td>
</tr>
<%
}
%>这是原始的代码,放在apache-tomcat-6.0.24\webapps\ROOT 下测试 ,页面中显示出了数据库中的所有数据 说明代码是没有问题,但是放到测试机上面去就是不行,调试发现 conn为null,但是在测试机中的该webproject下的lib我已经放置了 jar,不知道还是哪里的原因 conn对象总是获取不到呢

解决方案 »

  1.   

         conn = java.sql.DriverManager.getConnection("jdbc:mysql://*.*.*.*:3306/discuz", "root", "*");里面的*.*.*.*改成实际的ip地址
      

  2.   

    * 都是不愿让人看到才改的,IP 和 密码都是没问题的 ,毕竟在apache-tomcat-6.0.24\webapps\ROOT 下也测试过了,数据都查询出来了
      

  3.   

    conn为null,那么e.printStackTrace()打印什么异常?
     catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
    加上看看到底是什么
     catch (Exception e) {
                e.printStackTrace();
            }
      

  4.   

    之前看过的,印象最深的就是 NullpointerException
      

  5.   

    现在就是这个意思,我本地测试就OK,但那是tomcat,放到测试机上就取不到mysql jar包中类com.ibm.ws.jsp.JspCoreException: JSPG0049E: /jsp/page/erpgarden/samplelist.jsp 无法编译:JSPG0225E: 静态包含的文件 /jsp/page/erpgarden/foruminfo.jsp 中的行 2 发生错误JSPG0093E: 从文件 /jsp/page/erpgarden/samplelist.jsp 生成 servlet 错误/wasdata/WebSphere/AppServer/profiles/AppSrv01/temp/XJBPMnode/server1/InfoCenter_war/InfoCenter.war/jsp/page/erpgarden/_samplelist.java:12: 包 com.mysql.jdbc 不存在import com.mysql.jdbc.Driver;
    这是为嘛呢?
      

  6.   


    包 com.mysql.jdbc 不存在import com.mysql.jdbc.Driver;websphere.....
    好像可以指定它采用哪个jdbc,你需要在was的控制台去配一下?
      

  7.   

    还有mysql的jar需要加入工程里面。
      

  8.   

    mysql包复制到测试机上tomcat的lib下了,看看行不行
      

  9.   

    另忘了在看你项目的属性-》库-》添加jar/JAR/文件夹,然后把你下载驱动中的mysql.jar添加进去
      

  10.   


    你的mysql的jar一定要添加到你项目的lib目录下..如果你不添加到你的项目lib目录下的话.拷贝你的项目的时候,你又没有把mysql的jar拷贝到其他机器,所以,你的项目在其他机器上运行就会有问题..
      

  11.   

    楼上几位没有仔细看我的一楼的描述 我都说了本地测试OK了 测试机用的是was 相应的webproject 中lib也放了jar 了啊 怎么还让我放jar 呢?
      

  12.   

    现在改变思路,打算将<%@ page import="java.sql.*" %>
    <%@ page import="com.mysql.jdbc.Driver" %>
    <%@ page import="java.util.Date" %><%
    Connection conn = null;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://10.222.1.104:3306/discuz", "root", "passw0rd");
    } catch (SQLException e) {
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    String sql = "select t.* from (select * from cdb_posts ORDER by dateline desc ) t limit 5";
    Statement stmt = null;
    ResultSet rs = null;
    try {
    stmt= conn.createStatement();
    rs = stmt.executeQuery(sql);
    } catch (SQLException e) {
    e.printStackTrace();
    }%>
    <% if(rs!=null){
    while(rs.next()){
    %>
    <tr vAlign=top style="cursor:hand" onclick="showDetail(this, '', '');">
      <td height=10 width="10" align="right" valign="bottom">&nbsp;
        <image width="10" height="10" src="/images/arrow.gif" />&nbsp;
      </td>
      <td height=10 align="left" valign="bottom" class="gray-dashed">
    <font style="font-size:12px;color:#353535"> &nbsp;&nbsp;
      <%=rs.getString("subject") %>
        </font>
      </td>
      <td height=10 align="right" valign="bottom" class="gray-dashed">&nbsp;
    <font style="font-size:12px;color:#353535">
    <% Date d = new Date(rs.getTimestamp("dateline").getTime()) ; %>
       [<%= d %>
    </font>]
      </td>
      <td width="5">&nbsp;</td>
    </tr>
    <%
    }
    rs.close();
    }
    %>这个jsp放到discuz中去,然后再java中的一个jsp 通过iframe 去引用它,不过可能要把jsp改成php的 ,有高手能“翻译”下么?
      

  13.   

    将mysql的jar包放到tomcat的common\lib下
      

  14.   

    你确定测试机上装的数据库版本和你机子一样?建议换个数据库驱动jar包试试!
      

  15.   

    本地测试OK,挪了机器就出问题。这说明你的程序是OK的,问题可能出在你的环境配置上。
    比如引入的一下.jar文件的路径变化了等等。
      

  16.   

    回头重新看了一下, try {
               //这里少了东西了吧----  conn = db.getConnection();//你上面只是声明了一个//Connection conn = null;            stmt= conn.createStatement();
                rs = stmt.executeQuery(sql);
            } catch (SQLException e) {
                e.printStackTrace();
            }
      

  17.   

    哎,这位大哥,你用的是mysql,如果你是在本地联的话不会有问题,但如果要其他的电脑连接你的mysql这样是不行的,你没有设置远程连接,是不可能连接成功的,这可不是oracle和那你sql server,你最好在把你mysql里的权限改一下,让其他电脑也可以通过远程连接到你的mysql,要不然你程序里怎么写都没用。