为什么赢了';我的Java类不能写入数据库吗?
我无法让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
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()时存在问题。默认情况下,事务模式为自动提交,因此不必关闭连接即可显示数据。你仍然应该关闭你的连接来清理你自己。太棒了。我知道答案很简单。结案成功了。