背景:使用网络解决方案托管的Apache服务器上运行的应用程序。Friend/Customer坚持使用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();
}
}
}我在行连接conn= DriverManager.getConnection(数据库)上得到一个空指针异常
下面是堆栈跟踪:
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
发布于 2013-09-19 15:45:54
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探索和获取路径。
也不要忘记关闭连接
发布于 2012-03-29 06:50:57
既然您提到了apache,我将假定服务器正在运行Linux或BSD。
在这种情况下,请看以下内容:
linux上没有提供访问的默认驱动程序,除非安装JDBC,否则JDBC将无法工作。
除非有一个非常特殊和压倒性的理由使用Access数据库作为linux服务器上网站的后端,否则告诉您的朋友,这在技术上甚至经济上都不一致。
如果您需要服务器上的轻量级数据库,请使用SQLite:它是免费的,对从linux中的Java连接到它有很好的支持,有很好的工具(甚至浏览器插件),如果您的朋友希望偶尔获得访问备份,您可以随时使用将该数据库转换为。
否则,就像每个人一样,选择PostgreSQL或MySQL (通常有一个很好的理由)。
https://stackoverflow.com/questions/9917674
复制相似问题