问题描述:
使用jdbc-odbc连接数据库成功后,向表中插入数据。操作无异常抛出,但数据没有进入到数据库表中,但将插入操作执行完成后,使用Thread.sleep休息大于等于500毫秒【低于这个值也无法将数据入库】后,数据可以入库。
运行环境:
Eclipse SDK:Version: 3.1.1
JDK:1.4.2, 1.5, 1.6
Access:2003
源程序:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class accessTest {
    public static void main(String[] args) throws Exception {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection conn = DriverManager.getConnection("jdbc:odbc:common", "", "");
        Statement sql = conn.createStatement();
        String sqlSentence = "INSERT into PROXY(id)" + "values(92);";
        sql.execute(sqlSentence);
        Thread.sleep(500);
        System.out.println("finished!");
    }
}问题分析:
怀疑是Access数据库入库操作速度较慢,而虚拟机执行结束太快导致数据的无法入库问题。请大家帮助分析一下问题可能出现的原因!

解决方案 »

  1.   

    ODBC是C接口,Access是COM接口,Access本身是很差,不过估计不会差到那个地步,你再研究一下吧。
      

  2.   

    Connection conn = DriverManager.getConnection("jdbc:odbc:common", "",
    "");
    Statement sql = conn.createStatement();
    String sqlSentence = "INSERT   into   PROXY(id)" + "values(92);";
    sql.execute(sqlSentence); 
    sql.close(); // 增加这2句看看
    conn.close();
      

  3.   

    本人没用JDBC连过ACCESS数据库...但我看了一下,,觉得好像不该应这样写哦..你试试这样写:import   java.sql.Connection; 
    import   java.sql.DriverManager; 
    import   java.sql.Statement; 
    import   sun.jdbc.odbc.JdbcOdbcDriver;public   class   accessTest   { 
            public   static   void   main(String[]   args)   throws   Exception   { 
                    DriverManager.registerDriver(new JdbcOdbcDriver());
                    Connection   conn   =   DriverManager.getConnection("jdbc:odbc:common",   "",   ""); 
                    Statement   sql   =   conn.createStatement(); 
                    String   sqlSentence   =   "INSERT   into   PROXY(id)"   +   "values(92);"; 
                    sql.execute(sqlSentence); 
                    System.out.println("finished!"); 
            } 
    } 试试..应该就对了.
      

  4.   

    auto-commit  設置為ture
    然后  rs。close()
          sql。close()
      

  5.   

    采用手动提交看看
    一开始设置conn.setAutoCommit(false);
    结束时conn.commit()