在控制面板---》管理工具---》数据源ODBC---》系统DSN

解决方案 »

  1.   

    要选对数据库类型;仔细看看执行时出错信息;先用以下语句直接连接到数据库,测试一下你写的程序:
    Connection con=DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=F:\\jsp\\db1.MDB");
      

  2.   

    建立联接前要建立桥接器(且要捕异常):
    try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
    catch(ClassNotFoundException e){}
    然后再:
    Connection con=DriverManager.getConnection("jdbc:odbc:driver","name","passwd");
    sql=con.createStatement();
    ResultSet rs=sql.executeQuery("select * from table");
    中间加上调试语句就不难找出问题所在了。
      

  3.   

    在控制面板---》管理工具---》数据源ODBC---》系统DSN
    数据源名是楼上的jdbc:odbc:driver
    中的driver
    要和你代码中此处的一样
    要选择数据库路径
      

  4.   

    import java.sql.*;public class mFileNew
    {
    public static void main (String args[])
    {
    try {
    Statement mStmnt;
    PreparedStatement mPstmnt;
    ResultSet mResultSet;
    // add sun jdbc-odbc bridge
    Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");

    // 这里使用peacock_king(孔雀王) 提供的方法
    Connection mCon = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:\\Access\\db.MDB");

    mStmnt = mCon.createStatement();
    mStmnt.executeUpdate ("CREATE TABLE DemoTable(" + "test_id int, test_value, char(15) not null");
    mStmnt.executeUpdate ("INSERT INTO DemoTable(" + "test_id, test_value) VALUES (1, 'one')");
    mStmnt.executeUpdate ("INSERT INTO DemoTable(" + "test_id, test_value) VALUES (2, 'two')");
    mStmnt.executeUpdate ("INSERT INTO DemoTable(" + "test_id, test_value) VALUES (3, 'three')");
    mStmnt.executeUpdate ("INSERT INTO DemoTable(" + "test_id, test_value) VALUES (4, 'four')");
    mStmnt.executeUpdate ("INSERT INTO DemoTable(" + "test_id, test_value) VALUES (5, 'five')");
    // get another statement object
    mStmnt = mCon.createStatement();

    mResultSet = mStmnt.executeQuery ("SELECT * FROM DemoTable ORDER BY test_id");
    System.out.println ("Display all the datas");

    while (mResultSet.next()) {
    int _int = mResultSet.getInt ("test_id");
    String _str = mResultSet.getString ("test_value");
    System.out.println ("test_id == " + _int + "test_value == " + _str);
    }
    mPstmnt = mCon.prepareStatement ("UPDATE DemoTable SET test_value = ? WHERE test_id = ?");
    mPstmnt.setString (1, "hello");
    mPstmnt.setInt (2, 2);
    mPstmnt.executeUpdate();

    mStmnt = mCon.createStatement();
    mResultSet = mStmnt.executeQuery ("SELECT * FROM DemoTalbe ORDER BY test_id");

    if (mResultSet.next() && mResultSet.next()) {
    int _int = mResultSet.getInt ("test_id");
    String _str = mResultSet.getString ("test_value");
    System.out.println ("\t test_id == "+_int + " test_value == "+_str);
    }

    mCon.close();
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }
    }运行后报错如下:
    Java.sql.SQLException : [Microsoft] [ODBC Microsoft Access Driver]字段定义语法错误。
      at sun.jdbc.odbc.JdbcOdbc.createSQLExcption<JdbcOdbc.java:6031>
      at sun.jdbc.odbc.JdbcOdbc.standardError<JdbcOdbc.java:6188>
      at sun.jdbc.odbc.JdbcOdbc.SQLExeDirect<JdbcOdbc.java:2494>
      at sun.jdbc.odbc.JdbcOdbcStatement.execute<JdbcOdbcStatement.java:314>
      at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate<JdbcOdbcStatement.java:264>
      at mFileNew.main<mFileNew.java:29>字段该怎样定义?为什么?