背景:处理要在Network Solutions托管的Apache服务器上运行的应用程序。朋友/客户坚持使用Access数据库而不是SQL数据库。
当前问题:在我首先编写整个后端之前,写了一个Java测试程序以确保我可以连接到数据库。当我在apache服务器的JVM上运行此代码时,将托管最终产品:
import java.sql.*;
import java.io.*;
public class test {
public static void main(String[] args) {
try {
Class driverClass = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
DriverManager.registerDriver((Driver) driverClass.newInstance());
// set this to a MS Access DB you have on your machine
String filename = new File(".").getCanonicalPath() + "/ITEMS.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
database+= filename.trim(); // add on to the end
// now we can get the connection from the DriverManager
System.out.println(database);
Connection conn = DriverManager.getConnection( database );
} catch (Exception e) {
System.out.println("Error: " + e.getMessage() + " " + e.getLocalizedMessage());
e.printStackTrace();
}
}
}
我在Connection conn = DriverManager.getConnection(database)
行上得到一个空指针异常这是stacktrace:
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at test.main(test.java:20)
要编写此测试,我将此作为我的主要来源:http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2691&lngWId=2
答案 0 :(得分:0)
String strconnect="jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ="
Sring filename="some path";
StringBuilder a =new StringBuilder();
a.append(strconnect);
a.append(filename);
String db = a.toString();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection c= DriverManager.getrConnection(db,"","")
Statement stmt = c.createStament();
String query = "some query";
stmt.executeQuery(query);
c.close();
永远不要获取规范路径,指定访问文件的路径或使用JFile Explore并获取路径
也不要忘记关闭连接
答案 1 :(得分:-1)
既然你提到了apache,我会假设服务器正在运行Linux或BSD 在这种情况下,请查看以下内容:
Linux上没有提供Access的默认驱动程序,除非你安装了JDBC ODBC,否则JDBC ODBC将无法运行。
除非使用Access数据库作为Linux服务器上网站的后端有一个非常特殊且压倒性好的原因,否则请告诉您的朋友,这在技术上甚至在经济上并不一致。 / p>
如果您需要服务器上的轻量级数据库,请使用SQLite:它是免费的,有connecting to it from Java in linux的良好支持,有良好的工具(甚至是browser plugins),你可以如果您的朋友希望偶尔获得一次Access备份,请始终convert that database to Access。
否则,像所有人一样去寻找PostgreSQL或MySQL(通常是有充分理由的。)