为什么我的Java类不会写入数据库?

时间:2011-06-14 19:44:52

标签: java ms-access jdbc

我无法让Java写入数据库。

我有以下代码编译并运行,没有错误。

import java.sql.*;
import java.lang.reflect.*;
import java.lang.reflect.Array;

public class InquireRecord {

    private String submitter;

    public static void main(String[] args) {
        InquireRecord Stub = new InquireRecord();
        Stub.sendToDb("insert into inquiries (submitter) values ('Rodger Dunn')");
    }

    public InquireRecord() {
        super();
    }

    public void sendToDb(String queryString){
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String filename = "C:/Development/inquire.mdb";
            String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
            database+= filename.trim() + ";DriverID=22;READONLY=true}";
            Connection con = DriverManager.getConnection( database ,"","");
            Statement s = con.createStatement();
            s.execute (queryString);    
        }
        catch (Throwable e) {
            System.out.println(e);
        }
    }
}

文件C:/Development/inquire.mdb存在且可写。它没有被其他任何东西使用。

数据库有两个字段:ID(增量并且是索引)和submitter这是一个长度为255的文本字段。

运行时或编译时我没有收到任何错误。但是数据库中没有数据出现。我是Java的新手,但不是SQL。我错过了什么?

2 个答案:

答案 0 :(得分:1)

我猜你应该在退出程序之前关闭(con.close())连接。

答案 1 :(得分:0)

修改你的捕获:

try {
    Class.forName(....);
} catch (ClassNotFoundException e) {
    System.out.println(e.getMessage());
    System.exit(1);
}
try {        
   ...your SQL commands...
} catch (SQLException sqe) { 
   System.out.println(sqe.getMessage();
}

以了解会发生什么。

正如霍华德在上面评论的那样,READONLY可能是个问题......