java用cmd编译access数据库,使用JDBC和编译将Microsoft Access数据库连接到Java

for a school database project we are making a database program (user GUI and the database). Using Microsoft Access 2010 I created the database and populated it with some sample data, and saved it in .mdb format and placed it in my project folder.

When running it in eclipse the following code works fine, connects and even retrieves the query. However I find that I am unable to export the code to a jar and run it (which is required for the project, give them a working copy of your program on a CD or flash drive), and I'm also unable to port the code over to Netbeans to have it work, as well as trying to compile on a Linux machine.

I assume this is a problem with including drivers or trying to use Microsoft access. The error I get when running the jar or running on Netbeans is given below the code. So I ask either how do I include drivers to make the program portable, or how else can I approach this problem?

Thanks in advance

import java.sql.*;

public class JDBCTest {

static Connection connection;

static Statement statement;

public static void main(String args[]){

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();

String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=TLDATABASEDBM.mdb";

connection = DriverManager.getConnection( database ,"","");

buildStatement();

executeQuery();

}catch(Exception e){

e.printStackTrace();

System.out.println("Error!");

}

}

public static void buildStatement() throws SQLException {

statement = connection.createStatement();

}

public static void executeQuery() throws SQLException {

boolean foundResults = statement.execute("SELECT * FROM tblStaff AS x WHERE City='Calgary'");

if(foundResults){

ResultSet set = statement.getResultSet();

if(set!=null) displayResults(set);

}else {

connection.close();

}

}

public static void displayResults(ResultSet rs) throws SQLException {

ResultSetMetaData metaData = rs.getMetaData();

int columns=metaData.getColumnCount();

String text="";

while(rs.next()){

for(int i=1;i<=columns;++i) {

text+=""+metaData.getColumnName(i)+":\t";

text+=rs.getString(i);

//text+=""+metaData.getColumnName(i)+">";

text+="\n";

}

text+="\n";

}

System.out.println(text);

}

}

The error mentioned above:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)

at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)

at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)

at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)

at java.sql.DriverManager.getConnection(DriverManager.java:582)

at java.sql.DriverManager.getConnection(DriverManager.java:207)

at tldatabase.DataConnect.makeConnection(DataConnect.java:35)

at tldatabase.Main.main(Main.java:24)

解决方案

I know the post was years ago but I felt like answering the question for those who are just experiencing this right now. It took me a while to know the answer to the question so here's the solution:

Follow the "Running the 32-bit JVM".

All you have to do is find the netbeans.conf in the installation folder of your netbeans and change the directory from something like this:

netbeans_jdkhome="C:\Program Files\Java\jdk1.6.0_24"

to this:

netbeans_jdkhome="C:\Program Files (x86)\Java\jdk1.6.0_21"

The problem is netbeans might be running in 64 bit but MS Access only support 32-bit. So doing this would hopefully solve the problem. Also make sure to install this:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值