Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么赢了';我的Java类不能写入数据库吗?_Java_Ms Access_Jdbc - Fatal编程技术网

为什么赢了';我的Java类不能写入数据库吗?

为什么赢了';我的Java类不能写入数据库吗?,java,ms-access,jdbc,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

我无法让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不是。我缺少什么?

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

修改你的捕获:

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();
}
为了看看会发生什么


正如Howard在上面所评论的那样,只读可能是一个问题…

也许问题在于驱动程序参数中的
READONLY=true
?我认为在调用s.execute()而不是s.executeUpdate()时存在问题。默认情况下,事务模式为自动提交,因此不必关闭连接即可显示数据。你仍然应该关闭你的连接来清理你自己。太棒了。我知道答案很简单。结案成功了。