你的代码呢?
好象是你没有Class.forName('...");加载驱动吧

解决方案 »

  1.   

    /*
     * Created on 2005-4-10
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    package com.by.cngp;import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.*;
    /**
     * @author bin
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class test {
    public static void main(String[] args){
    String tablename;
    Connection sqlConn=null;
    PreparedStatement stmt=null;
    LogApp logapp = new LogApp();
         try {
          Class.forName("com.mysql.jdbc.Driver").newInstance();
          sqlConn = DriverManager.getConnection(
               "jdbc:mysql://localhost/phsdb?user=root&password=admin");
           java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyyMMddHHmmsss");
           java.util.Date rightNow = new java.util.Date();
           String now = sdf.format(rightNow);
           System.out.println(now);
           tablename="tbrcvlog"+Integer.toString(rightNow.getMonth()+1);
          
             stmt = sqlConn.prepareStatement("insert into tbrcv(msgid,isreport,msgformat,recvtime,srctermid,desttermid,msglength,msgcontent,ProtocolID_Parameter,Protocol_Length,Protocol_value,flag) values(?,?,?,?,?,?,?,?,?,?,?,?)");
             stmt.setString(1,"0123456798");
             stmt.setString(2,"1");
             stmt.setString(3,"15");
             stmt.setString(4,now);
             stmt.setString(5,"106010180001023");
             stmt.setString(6,"97171");
             stmt.setInt(7,234);
             stmt.setString(8,new String("你好啊噢测试哦".getBytes("GB2312"),"ISO8859-1"));
             stmt.setDouble(9,2);
             stmt.setDouble(10,3);
             stmt.setInt(11,4);
             stmt.setString(12,"N");
             
             stmt.executeUpdate();
             stmt = sqlConn.prepareStatement("insert into tbrcvlog(msgid,isreport,msgformat,recvtime,srctermid,desttermid,msglength,msgcontent,ProtocolID_Parameter,Protocol_Length,Protocol_value,flag) values(?,?,?,?,?,?,?,?,?,?,?,?)");
         stmt.setString(1,"0123456798");
             stmt.setString(2,"1");
             stmt.setString(3,"15");
             stmt.setString(4,now);
             stmt.setString(5,"106010180001023");
             stmt.setString(6,"97171");
             stmt.setInt(7,234);
             stmt.setString(8,new String("你好啊噢测试哦".getBytes("GB2312"),"ISO8859-1"));
             stmt.setDouble(9,2.0);
             stmt.setDouble(10,3);
             stmt.setInt(11,4);
             stmt.setString(12,"N");
             stmt.executeUpdate();
             }catch(SQLException e){
              //display SQL specific exception information
              logapp.log("********************");
              logapp.log("SQLException in mainL"+e.getMessage());
              logapp.log("**SQLState:"+e.getSQLState());
              logapp.log("**SQL Error Code:"+e.getErrorCode());
              logapp.log("********************");
              e.printStackTrace();          
             }catch(Exception e){
              LogApp.log("Exception in main:"+e.getMessage());
              e.printStackTrace();
                }finally{
              try{
              if(sqlConn!=null)
              sqlConn.close();
              }catch(SQLException e){
              e.printStackTrace();
              }
             }
    }
    }这使这个程序的全部代码,晕死了,不知道是TMD怎么回事,服务器上装得jdk1.3,是不是跟这个有关系阿,是不是要换成jdk1.4阿
      

  2.   

    为什么阿,在我本机上是可以运行的,我本机上装的是jdk1.4,但服务器的配置改不了,我是用java -classpath ../(包)调试的,这个命令还会调用系统classpath里的包吗?等待高手们答复。
      

  3.   

    恩,代码没有问题
    异常怎么说是禁止访问java.sql.*这个包呢?
    难道还和权限有关系?你试试重装一下jdk
      

  4.   

    服务器上有别的程序,而且我没有权限在服务器上安装jdk.这可咋办呢?
      

  5.   

    呵呵,我知道了
    确实是权限问题啊,你在服务器上面调试的?是不是没有权限?
    而且你这个代码不需要指定classpath
    直接用java xxx执行就行
      

  6.   

    jFresH_MaN(TM),你说以前用jdk1.3写的程序,如果我换成jdk1.4那程序会不会出问题?
      

  7.   

    这要有什么权限,服务器是linux?
      

  8.   

    怎么会没有权限问题?
    linux上面,你肯定不是root用户,如果jdk是root安装的,那么你肯定没有权限使用的1.3的代码到1。4上面是没有问题的,只会有些警告
    你直接用java xxx运行
      

  9.   

    jFresH_MaN(TM),使我的数据库的权限不够,还是我访问远程服务器的用户权限不够?应该是那个呢?
      

  10.   

    很有可能是你访问jdk的文件权限不够,也就是访问远程服务器的权限不够
      

  11.   

    这样啊,我明天在试试,程序都写好了,就这个东西花了一下午的时间,怎么也连不上数据库。郁闷阿,谢谢你,jFresH_MaN(TM) ,我的MSN:[email protected],有时间夹我聊天。
      

  12.   

    不过我觉得很奇怪,服务器如果是专门给调试java程序的就不会不分配权限你修该几个地方试试
      

  13.   

    jFresH_MaN(TM) ,还在吗?
      

  14.   

    你试试啊!
    我觉得不一定行inmport java.sql.xxx://不要用*了执行用java xxx//不要加-classpath ..了
    还有你的服务器是专门给你们测试的吗?
    如果是这样不应该存在权限问题的
      

  15.   

    我必须加上-classpath来加mysql 驱动,现在出这个错误:
    java -classpath .:../lib/log4j-1.2.8.jar:../lib/mysqldriver.jar com/by/cngp/test
    Exception in thread "main" java.lang.NoClassDefFoundError: java/sql/Savepoint
            at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:268)
            at java.sql.DriverManager.getConnection(DriverManager.java:517)
            at java.sql.DriverManager.getConnection(DriverManager.java:199)
            at com.by.cngp.test.main(test.java:27)
      

  16.   

    java/sql/Savepoint
    这个东西jdk1.3里面没有
      

  17.   

    Savepoint类是jdk1.4才有的,所以是这里有问题了
    看来还是jdk版本的问题,呵呵
      

  18.   

    哎,不整了,回家,已近很晚了,明天再说,谢谢你, jFresH_MaN(TM) 。
      

  19.   

    如果我把jdk1.4 的rt.jar用classpath引进来,就会出现我问的那个错误,为什么,-classpath跟系统设置的classpath有关系吗?他不是到我制定的地方去找吗?
      

  20.   

    结果就是这样了:
     java -classpath .:../lib/log4j-1.2.8.jar:../lib/mysqldriver.jar:../lib/lib_1.4.2_03/rt.jar: com/by/cngp/test
    DEBUG - ********************
    DEBUG - SQLException in mainLCannot load connection class because of underlying exception: 'java.lang.SecurityException: Prohibited package name: java.sql'.
    DEBUG - **SQLState:08001
    DEBUG - **SQL Error Code:0
    DEBUG - ********************
    java.sql.SQLException: Cannot load connection class because of underlying exception: 'java.lang.SecurityException: Prohibited package name: java.sql'.
            at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:277)
            at java.sql.DriverManager.getConnection(DriverManager.java:517)
            at java.sql.DriverManager.getConnection(DriverManager.java:199)
            at com.by.cngp.test.main(test.java:27)
    bash-2.04$
      

  21.   

    你如果读过
    <<java深度历险>>你就知道了,使用-classpath是很有意思的事情
    类加载的顺序是有一定顺序的,有可能去系统路径里面寻找的,所有会有权限问题你最好把log4j和mysql驱动加到CLASSPATH里面使用
    所以我之前就是一直建议你不要加-classpath参数加载类就是这个原因