을 컴파일하여 데이터베이스 프로그램 (사용자 GUI 및 데이터베이스)을 만들고 있습니다. Microsoft Access 2010을 사용하여 데이터베이스를 만들고 샘플 데이터를 채우고 .mdb 형식으로 저장 한 다음 프로젝트 폴더에 저장했습니다.JDBC를 사용하여 Microsoft Access 데이터베이스를 Java에 연결하고 학교 데이터베이스 프로젝트에
이클립스에서 실행할 때 다음 코드는 잘 작동하고 쿼리를 연결하고 검색합니다. 그러나 코드를 jar 파일로 내보내고 실행할 수 없다는 것을 알았습니다 (프로젝트에 필요합니다. CD 또는 플래시 드라이브에 프로그램의 작업 복사본을 제공하십시오). Netbeans에서 작동하도록 코드를 작성하고 Linux 컴퓨터에서 컴파일하려고합니다.
나는 이것이 드라이버를 포함하거나 Microsoft 액세스를 사용하는 데 문제가 있다고 가정합니다. 항아리를 실행하거나 Netbeans에서 실행할 때 발생하는 오류는 코드 아래에 나와 있습니다. 그래서이 프로그램을 이식 할 수있는 드라이버를 어떻게 포함시킬 것인가, 아니면 어떻게이 문제에 접근 할 수 있을까요? 사전에
덕분에
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);
}
}
오류 위에서 언급 한 :
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)
파일의 경로가 올바르지 않으면 "데이터 원본 이름을 찾을 수없고 기본 드라이버가 지정되지 않았습니다."오류가 아닌 알 수없는 파일 오류를 열 수 있습니다. 내가 전체 데이터베이스 프로그램을 패키지화하고 교사에게 실행할 필요가 있기 때문에 DSN을 사용할 수 있는지, 항아리 작업을 할 수 있는지 확실하지 않습니다. 이전에 DSN 경로를 사용하려고 시도했지만 문제가 발생했습니다. 다시 시도하고 데모 용으로 TA를 제공 할 때 프로그램을 실행하도록 읽을 수 있는지 물어 봅니다. 그래도 도움을 주셔서 감사합니다. – Moogle
좋아, jar 파일로 DSN과 함께 작동합니다. 내 유일한 질문은 지금은 창문이 Windows 액세스 파일에 연결하는 드라이버를 가지고 있기 때문에 그들이 아닌 Windows 컴퓨터에서 프로그램을 실행하면 작동하지 않을까요? 그리고 나는 다른 방법으로 ms 액세스 .mdb 파일을 java를 사용하여 연결할 수 있다고 가정합니까? 감사! – Moogle
Jython을 사용하여 Northwind Access 데이터베이스에서 테스트했습니다. 전체 .mdb 파일 이름과 DSN이 포함 된 연결 문자열로 작업했습니다. Java에서'Class.forName()'다음에'newInstance()'를 추가해야하는지 잘 모르겠습니다. 자바 6에서는'Class.forName()'을 호출 할 필요가 없다. http://onjava.com/pub/a/onjava/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html을 살펴보십시오. –