我连接过其他机器上得DB2数据库(winXP db2 v7英文版),没问题

解决方案 »

  1.   

    你不是没有import db2的驱动程序包吧
      

  2.   

    需要import吗?
    你指得是哪个包?
      

  3.   

    当然是COM.ibm.db2.jdbc.net.DB2Driver所在的包了
    你注册驱动程序 编译器的去找它啊
    我用oracle 没用过db2 不太确定是哪一个包
    你应该知道的 唉
    你查查吧
      

  4.   

    我知道编译的时候需要db2针对java的包,是在db2\sqllib\java\db2java.zip中
    但是在源代码中不需要用import语句来引入具体的类吧?
    请让我看看你联oracle的源代码!
      

  5.   

    import java.lang.*;
    import java.sql.*; import oracle.jdbc.driver.*; //倒入要用到的包 public class hhw extends Object
    { public static void main(String args[]) throws SQLException, ClassNotFoundException //抛出SQLException异常 { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");    Class.forName ("oracle.jdbc.driver.OracleDriver"); // 登记驱动程序,准备联接数据库Connection cn1 =DriverManager.getConnection"jdbc:oracle:thin:@192.168.1.52:1521:SONIC", "sadly", "sadly");  Connection cn1 
    Statement s1=cn1.createStatement();
    ResultSet rs1=s1.executeQuery("select * from users where id>0 and id<4 0000 "); //从数据源中取得数据,定义一些中间变量 int id; String name=new String("1");
    String passwd=new String("1");
    String email=new String("1"); //执行另一个查询,向目的数据库插入数据 while(rs1.next())
    {id=rs1.getInt(1);
    name=rs1.getString("name");
    passwd=rs1.getString("passwd");
    email=rs1.getString("email"); //System.out.print(id+name+passwd+email);
    s1.executeQuery("insert into bbsuser values(\\"+id+"\,\\"+name+"\,\\"+pas swd+"\,\\"+email+"\)"); } }}  
    这不是我编的原码 我不太肯定对不对 不过连数据库的那几句肯定是对的
      

  6.   

    我也是碰到这个问题了。你IMPORT也是没有用的,不信你试试看,我到现在还是没有搞定。呵呵,就是这么奇怪阿
      

  7.   

    当然没用 oracle 的驱动程序包你的机器上没有
    我的机器上可是有的
      

  8.   

    这是DB2提供的帮助:CLI0601E 语句句柄无效或语句已关闭。 说明: 在操作前已关闭语句。 用户的响应: 确保在操作前未调用语句关闭和语句连接关闭。 
    你可以把错误栈打出来看看在那一行,还有你用的是 SELECT * FROM 你可以
    检查看看你的数据是不是同你数据库中的列一致你的驱动是正确
      

  9.   

    在server端: (AIX、DB2 UDB V7 英文版)
    以TCP/IP方式 CATALOG db 
      

  10.   

    你把driver扔到相应的web-ifo目录去看看!
    程序中没必要import driver,
    dirver 是动态加载的!如果还不行!
    你的static 块会不会出问题,能保证驱动程序一直加载吗?
      

  11.   

    driver应放在web-inf/class目录吧!
    与classpath 无关!
      

  12.   

    从前几个留言看来,是不是driver加载的问题,小弟初学java,还不知道如何调试出那条语句出错?请告知!!
      

  13.   

    经过调试,是在这条语句是出错
    Statement stmt = con.createStatement();
    前一条是
    con = DriverManager.getConnection(dburl,userid,passwd);
    请问各位这是哪除了错?
      

  14.   

    我来分析一下!
    应该是Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();无法加载driver!因为,你把它放在static块内!
    所以调试的时候并未执行该static块,
    自然在DriverManager.getConnection(dburl,userid,passwd)无法建立连接!
    可见,java没有加载driver!
    把Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();
    挪到doGet()内!这里应该会出错!
      

  15.   

    我试过你说的
    象这样:
    import java.io.*;
    import java.sql.*;
    import java.util.*;public class Test{
    public  static void main(String[] str){
    Connection con=null;
    String userid="db2dev";
    String passwd="db2dev";
    String dburl="jdbc:db2://172.16.253.13:6789/dev";

          try {
             Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();
             con = DriverManager.getConnection(dburl,userid,passwd);
    System.out.println("....."+con.toString());
    System.out.println("hi");
    Statement stmt = con.createStatement();
    }catch (Exception e) 
    {
            System.out.println("error: " + e.toString());        
         } 
        }
        
      } 还是不行!显示
    error: COM.ibm.db2.jdbc.DB2Exception: [IBM][JDBC Driver] CLI0601E 语句句柄无效或语句已关闭。SQLSTATE=S1000 
      

  16.   

    插入语句看看,哪出错?
    Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();
    System.out.println("hihi1");
    con = DriverManager.getConnection(dburl,userid,passwd);
      

  17.   

    试试能不能直接telnet到 172.16.253.13:6789。