को एक डेटाबेस डेटाबेस प्रोजेक्ट के लिए संकलित करना हम डेटाबेस प्रोग्राम (उपयोगकर्ता जीयूआई और डेटाबेस) बना रहे हैं। माइक्रोसॉफ्ट एक्सेस 2010 का उपयोग करके मैंने डेटाबेस बनाया और इसे कुछ नमूना डेटा के साथ पॉप्युलेट किया, और इसे .mdb प्रारूप में सहेजा और इसे मेरे प्रोजेक्ट फ़ोल्डर में रखा।जेडीबीसी का उपयोग कर जावा में माइक्रोसॉफ्ट एक्सेस डेटाबेस को कनेक्ट करना और
ग्रहण में इसे चलाने पर निम्न कोड ठीक काम करता है, कनेक्ट करता है और क्वेरी को भी पुनर्प्राप्त करता है। हालांकि मुझे लगता है कि मैं एक जार में कोड निर्यात करने में असमर्थ हूं और इसे चलाता हूं (जो परियोजना के लिए आवश्यक है, उन्हें अपने कार्यक्रम की एक सीडी या फ्लैश ड्राइव पर काम करने की प्रतिलिपि दें), और मैं पोर्ट को बंद करने में भी असमर्थ हूं 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)
ठीक है, कोड के कार्य ग्रहण संस्करण के साथ परीक्षण करता है, तो फ़ाइल का पथ सही नहीं है मैं एक अज्ञात फ़ाइल त्रुटि नहीं खोल सकता नहीं एक "नहीं मिला डेटा स्रोत नाम और कोई डिफ़ॉल्ट चालक निर्दिष्ट" त्रुटि। मुझे यकीन नहीं है कि क्या मैं एक डीएसएन का उपयोग कर सकता हूं और जार काम कर सकता हूं क्योंकि मुझे पूरे डेटाबेस प्रोग्राम को पैकेज करने और इसे चलाने के लिए शिक्षक को देने की आवश्यकता है। मैंने पहले डीएसएन मार्ग का उपयोग करने का प्रयास किया लेकिन मुझे इसे काम करने में कुछ परेशानी हुई, मैं फिर कोशिश करूँगा और पूछूंगा कि क्या मैं प्रोग्राम चलाने के लिए मुझे पढ़ सकता हूं जब मैं प्रदर्शन के लिए टीए को देता हूं। फ़िर भी सहायता के लिए धन्यवाद। – Moogle
ठीक है तो यह एक जेआर फ़ाइल के रूप में एक डीएसएन के साथ काम करता है। मेरा एकमात्र सवाल यह है कि अगर वे एक गैर विंडोज कंप्यूटर पर प्रोग्राम चलाते हैं तो यह काम नहीं करेगा, क्योंकि केवल विंडोज़ में एमएस एक्सेस फाइलों से कनेक्ट करने के लिए ड्राइवर हैं, है ना? और मुझे लगता है कि जावा का उपयोग कर एमएस एक्सेस। एमडीबी फाइल से कनेक्ट करने का कोई और तरीका नहीं है? धन्यवाद! – Moogle
मैंने ज्योथन का उपयोग नॉर्थविंड एक्सेस डेटाबेस के साथ किया। यह कनेक्शन स्ट्रिंग के साथ काम करता है जिसमें पूर्ण। एमडीबी फ़ाइल नाम और डीएसएन है। मुझे यकीन नहीं है कि जावा में आपको 'class.forName() 'के बाद' newInstance()' जोड़ना होगा। जावा 6 में आपको 'class.forName() 'को कॉल करने की भी आवश्यकता नहीं है। Http://onjava.com/pub/a/onjava/2006/08/02/jjdbc-4-enhancements-in-java-se-6.html पर एक नज़र डालें। –