2011-05-27 9 views
6

मैंने एक जावा डेस्कटॉप एप्लिकेशन को एक MySQL डेटाबेस के साथ लिखना समाप्त कर दिया है। मैं नेटबीन्स के बाहर एप्लिकेशन को चलाने के लिए और इसे अन्य कंप्यूटरों पर स्थापित करने देना चाहता हूं। मैं प्रोजेक्ट बनाने और रननेबल जार फ़ाइल बनाने के बारे में जानता हूं, हालांकि इसके लिए मुझे डेटाबेस को अन्य कंप्यूटर पर निर्यात करने की आवश्यकता है, जिसे मैं एप्लिकेशन को चलाने के लिए चाहता हूं। मेरा प्रश्न दो भाग है:माइक्रोसॉफ्ट डीबी के साथ जावा डेस्कटॉप एप्लिकेशन के साथ एक बार इंस्टॉलर कैसे बनाया जाए?

1) क्या कोई तरीका है कि मैं एक सेटअप फ़ाइल बना सकता हूं जो डेटाबेस और एप्लिकेशन को एक साथ स्थापित करता है?

2) इसके अलावा मेरा डेटाबेस पथ हार्ड कोड किया गया है, इसका मतलब यह है कि हर बार जब मैं किसी के लिए अपना एप्लिकेशन इंस्टॉल करता हूं तो कोड को बदलना होता है, ऐसा करने का बेहतर तरीका क्या है?

धन्यवाद

उत्तर

7
  1. हां। उदाहरण के लिए, आप InnoSetup जैसे कुछ सेटअप बिल्डर का उपयोग कर सकते हैं। निजी तौर पर, हालांकि, मैं अपने ग्राहकों को एक ज़िप फ़ाइल देना पसंद करता हूं, जिसे वे कहीं भी निकालते हैं। निष्पादन योग्य जार अपने आप सबकुछ संभालने में सक्षम होना चाहिए (मुझे यह पसंद है कि सॉफ़्टवेयर इंस्टॉल करने की आवश्यकता नहीं है, बस अनपैक करें और चलाएं)।
  2. यदि यह हार्डकोड किया गया है, तो हाँ (लेकिन, हार्डकोडेड द्वारा फ़ाइल का मतलब क्या है? फ़ाइल के लिए पथ? आईपी पता?)। पथों और अन्य बाहरी चीजों के लिए आपको गुण या कॉन्फ़िगरेशन फ़ाइलों का उपयोग करना चाहिए, जो आपका सॉफ़्टवेयर निर्भर करता है। सॉफ्टवेयर उन फ़ाइलों से पढ़ना चाहिए। ऐसी फ़ाइल (ओं) की उपस्थिति के लिए स्टार्टअप जांच पर - यदि अनुपलब्ध है, तो उपयोगकर्ता को एक विंडो दिखाई देनी चाहिए जिसमें कॉन्फ़िगरेशन दर्ज किया जा सकता है।

अपने कोड के साथ MySQL को तैनात करने के लिए - इसके लिए सर्वर का उपयोग करने पर विचार करें, ताकि आपके उपयोगकर्ताओं को MySQL इंस्टॉल करने के लिए मजबूर नहीं किया जा सके, बल्कि वे नेट पर कनेक्ट हो जाएं। यदि आपको केवल स्थानीय रूप से डेटा संग्रहीत करने के लिए डेटाबेस की आवश्यकता है, तो SQLite या समान, फ़ाइल-आधारित डीबी इंजन का उपयोग क्यों नहीं करें?

उपरोक्त उत्तरों केवल सुझाव हैं और मैं जिस तरह से सोच रहा हूं उससे कम-प्रतिबिंबित करता हूं। मुझे किसी और अनुभव से किसी से सुनकर खुशी होगी। फिर भी, मुझे उम्मीद है कि उत्तर थोड़ा मदद करेंगे :)

+0

हार्डकोडेड का मेरा मतलब वास्तव में कनेक्शन स्ट्रिंग है। –

+0

यह यूआरएल है, यह स्थानीयहोस्ट 3306 पर है, क्या मुझे इसे इस तरह से रखना चाहिए और अपने क्लाइंट के लिए फास्ट इंस्टॉलेशन के लिए mySQL इंस्टॉल करना चाहिए? –

+2

यह * स्थानीय रूप से डेटा संग्रहीत * में आता है, तो आप [SQLite] (http://www.sqlite.org) पर विचार करना चाहेंगे जो - मेरे लिए - एक बेहतर विचार है। हालांकि, अगर आप वास्तव में MySQL के साथ रहना चाहते हैं, तो यूआरएल, पोर्ट, उपयोगकर्ता नाम और पासवर्ड कुछ कॉन्फ़िगरेशन फ़ाइल में रखा जाना चाहिए (पासवर्ड, जाहिर है, किसी भी तरह एन्कोड किया गया है, इसलिए यह सादा संग्रहित नहीं है)। निश्चित रूप से इसका मतलब है कि आपके प्रत्येक क्लाइंट में MySQL स्थापित होना चाहिए। आखिरकार, यदि स्थानीय नेटवर्क में, एक मशीन पर MySQL सर्वर सेट अप करें और अन्य इसे कनेक्ट करें। इस तरह आपको अपने सभी उपयोगकर्ताओं के लिए क्लाइंट इंस्टॉल नहीं करना होगा, लेकिन केवल एक ही। – Sorrow

3

मैं दुख से सहमत हूं।

यदि मुझे MySQL का उपयोग करना है, तो यह आम तौर पर नेट पर होता है क्योंकि मैं अपने क्लाइंट को MySQL इंस्टॉल करने के hazzles से गुजरने की अनुमति नहीं देना चाहता हूं। यदि आप स्थानीय रूप से MySQL का उपयोग करने के साथ फंस गए हैं, तो MySQL अनुपयुक्त इंस्टॉलेशन + एनएसआईएस इंस्टॉलर की जांच करें।

यदि आप किसी भी डीबी का उपयोग कर सकते हैं, तो मैं सिर्फ javadb/derby का उपयोग करता हूं। यह आजकल अधिकांश जावा इंस्टॉलेशन के साथ बंडल आता है और यदि आपको आवश्यकता नहीं है तो आपको एप्लिकेशन में एक जार फ़ाइल जोड़नी है।

'हार्डकोडिंग' पथों के अनुसार, मैं वास्तव में समझ नहीं पा रहा हूं कि आपका क्या मतलब है। आपके पास वास्तव में 'पथ' नहीं हैं, क्योंकि मैं मान रहा हूं कि आपका मतलब कनेक्शन स्ट्रिंग है। आपको अपनी कनेक्शन स्ट्रिंग को हार्डकोड करने की आवश्यकता नहीं है, बस कुछ पैरामीटर को गुण फ़ाइल में रखें और उनसे अपनी कनेक्शन स्ट्रिंग बनाएं।

1

1) क्या कोई तरीका है कि मैं एक सेटअप फ़ाइल बना सकता हूं जो डेटाबेस और एप्लिकेशन को एक साथ स्थापित करता है?

Java based Standalone application पर मेरा उत्तर देखें।

2) इसके अलावा मेरा डेटाबेस पथ हार्ड कोड किया गया है, इसका मतलब यह है कि हर बार जब मैं किसी के लिए अपना एप्लिकेशन इंस्टॉल करता हूं तो कोड को बदलना होता है, ऐसा करने का बेहतर तरीका क्या है?

क्या डीबी इंस्टॉलर उपयोगकर्ता को यह पूछने के लिए JFileChooser पर क्लिक करें जहां वे डीबी स्थापित करना चाहते हैं। जेएनएलपी एपीआई PersistenceService का उपयोग करके उस पथ को स्टोर करें। यहां मेरा demo. of the PersistenceService है।

संबंधित मुद्दे