其实这个问题很老了,可是我在做课程设计时还是老遇到问题。
我开发一个图书管理系统,要连接MS sql server和Mysql两种数据库,可是不知道为什么两个都连不上其中我已经从微软的网站上下了IDBC:ODBC桥连接用的驱动器(三个压缩文件),放在了java路径的lib目录下,并改了环境变量中的PATH值,然后重启。
然后编写了一段代码测试,老是连接不上:
/*通过使用JDBC-ODBC 桥的建立
 * Access 数据库
 *SimpleJDBC.java;
 */
 
import java.io.*;  
import java.sql.*;
 
 public class SimpleJDBC {
  public static void main(String args[]) throws SQLException,
                                   IOException,
                                   ClassNotFoundException
  { 
 
         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();          String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TEST";          String user="sa";          String password="";          Connection conn= DriverManager.getConnection(url,user,password);
                          //通过DriverManager获得连接
          System.out.println(" Successfully established @_@ :p !");
    /* 第二步:建立表
   * 通过JDBC-ODBC建立表
   */
   
   ResultSet rest=null;
   Statement statement=connection.createStatement();
   
   statement.executeUpdate("drop table user");
   statement.executeUpdate("Create table user("
                              +"userID integer,"
                              +"userName char(10))"
                              );
      statement.executeUpdate("insert into user values(001,'beggarson')");
      statement.executeUpdate("insert into user values(002,'Tom')");
      statement.executeUpdate("insert into user values(003,'Marry')");
      statement.executeUpdate("insert into user values(004,'Jun')");
     rest=statement.executeQuery("select * from user");
      while(rest.next()){
      System.out.print("userID "+rest.getString("userID"));
      System.out.println("   userName "+rest.getString("userName"));
      }  
     rest.close();
     statement.close();
     connection.close();                       
  }                           
                                                  
 }
 
写的不标准,没用try和catch等括起来,我会改的。可是连接不上。
而且更气愤的是我从mysql官方网上找了半天也没找到驱动器,更别提怎么设置了。
可能我的英语太烂了吧!
:(希望各位高手指教下,谢谢先。
不管怎么样,谢谢阅读。

解决方案 »

  1.   

    http://nwpulipeng.blogchina.com/1829299.html
    我也做过,你去看看
      

  2.   

    借花献佛,我也把我测试的一段连接oracle代码贴出来,也没有成功,暂时没有搞清楚那里出了问题]
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;/*
     * Created on 2005-7-13
     *
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     *//**
     * @author Administrator
     * 
     * TODO To change the template for this generated type comment go to Window -
     * Preferences - Java - Code Style - Code Templates
     */
    public class TestConnectDB {
    public static void main(String args[]) {

    Connection con = null;
    Statement stmt = null;
    try {
    String driverName = "oracle.jdbc.driver.OracleDriver";
    Class.forName(driverName);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } String serverName = "127.0.0.1"; String serverPort = "1521"; String serverID = "oracl"; String userName = "goa"; String userPsw = "goa"; String url = "jdbc:oracle.thin:@" + serverName + ":" + serverPort + ":"
    + serverID;
    try { con = DriverManager.getConnection(url, "goa", "goa");
    } catch (SQLException e1) { e1.printStackTrace();
    }
    try {
    stmt = con.createStatement();
    } catch (SQLException e2) {
    // TODO Auto-generated catch block
    e2.printStackTrace();
    }
    String createTableCoffees = "create table test_table "
    + "(id varchar2(32), name varchar2(32),sex int) ";

    try {
    stmt.executeUpdate(createTableCoffees);
    } catch (SQLException e3) {
    // TODO Auto-generated catch block
    e3.printStackTrace();
    }
    try {
    stmt.executeUpdate("insert into test_table "
    + "values('20050713001','小军',1)");
    } catch (SQLException e4) {
    // TODO Auto-generated catch block
    e4.printStackTrace();
    } }
    }
      

  3.   

    报错如下java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at TestConnectDB.main(TestConnectDB.java:27)
    java.sql.SQLException: No suitable driver
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at TestConnectDB.main(TestConnectDB.java:46)
    java.lang.NullPointerException
    at TestConnectDB.main(TestConnectDB.java:52)
    Exception in thread "main"
      

  4.   

    1。首先是没有找到类oracle.jdbc.driver.OracleDriver
    捕获异常的信息是:java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    2。然后你又让程序继续执行到下面这句
    con = DriverManager.getConnection(url, "goa", "goa");
    导致了第二个异常:java.sql.SQLException: No suitable driver
    3.你又再让程序继续到stmt = con.createStatement();导致了最后一个异常
    java.lang.NullPointerException
    这是因为con是null所致
      

  5.   

    我将class12.jar加载进这个工程,运行后报这个错误Activation.main: 警告: sun.rmi.activation.execPolicy 系统
    属性未被指定且 ExecPermissions/ExecOptionPermissions
    均未被授权。随后的激活尝试失败,原因是对
    ExecPermission/ExecOptionPermission 的权限检查失败。 有关如何
    配置 rmid 安全性的文档说明,请参阅: http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html
    http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.htmlActivation.main: 出现异常:Port already in use: 1098; nested exception is: 
    java.net.BindException: Address already in use: JVM_Bind
    java.rmi.server.ExportException: Port already in use: 1098; nested exception is: 
    java.net.BindException: Address already in use: JVM_Bind
    at sun.rmi.transport.tcp.TCPTransport.listen(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport.exportObject(Unknown Source)
    at sun.rmi.transport.tcp.TCPEndpoint.exportObject(Unknown Source)
    at sun.rmi.transport.LiveRef.exportObject(Unknown Source)
    at sun.rmi.server.UnicastServerRef.exportObject(Unknown Source)
    at sun.rmi.registry.RegistryImpl.setup(Unknown Source)
    at sun.rmi.registry.RegistryImpl.<init>(Unknown Source)
    at java.rmi.registry.LocateRegistry.createRegistry(Unknown Source)
    at sun.rmi.server.Activation.main(Unknown Source)
    Caused by: java.net.BindException: Address already in use: JVM_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(Unknown Source)
    at java.net.ServerSocket.bind(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at java.net.ServerSocket.<init>(Unknown Source)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(Unknown Source)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createServerSocket(Unknown Source)
    at sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(Unknown Source)
    ... 9 more
      

  6.   

    到网上下载一个JDBC驱动(For Mysql,不太好找),通常是.rar压缩文件,下下来后解压到JDK目录D:\Program Files\j2sdk1.4.0\mysql下,然后添加classpath环境变量:%JAVA_HOME%\mysql;(JAVA_HOME是JDK主目录D:\Program Files\j2sdk1.4.0)其实就是把那个驱动包的路径加到环境变量里就可以了
      

  7.   

    请问能不能把下载的包放在已经生效的其他环境变量的路径里呢?比如我把驱动包放在d:/program files/sql/data 下,而d:/program files/sql/data已经在环境变量里了.这样能找到么?
    谢谢!!
    我这样做的原因是因为我在机房调试时,
    不能修改环境变量.
      

  8.   

    可以啊
    或者你把第三方的包都放在$j2sdk$\jre\lib\ext\下面
    这样的话什么都不要改了