ورود

View Full Version : java db و استفاده از بانک در مسیر جاری پروژه



بهزاد علی محمدزاده
یک شنبه 23 مرداد 1390, 00:56 صبح
سلام ...

من وقتی بانکم رو ایجاد می کنم ، ( با netbeans ) ، به هر طریقی می تونم بهش دسترسی داشته باشم ...

مثلا بانکم رو اگر توی درایو C داشته باشم ...

با این روش باهاش ارتباط برقرار می کنم :

conn = DriverManager.getConnection("jdbc:derby:C:/mybank");

اما خب اشکال این روش رو می دونید که دیگه حتما باید درایو c موجود و بانک هم اونجا باشه !!

روش دیگه ایی که هست :

String userHomeDir = System.getProperty("user.home", ".");
String systemDir = userHomeDir + "/.addressbook";
System.setProperty("derby.system.home", systemDir);



با این روش در پوشه home کاربر بانک من ایجاد میشه و می تونم باهاش کار کنم ...اما هیچکدام از این روشها جوابگوی من نیست ، و من می خوام بانکم در داخل خود پوشه پروژه ام شناسایی بشه و هر جا که اون پوشه میره ، برنامه بتونه با هاش ارتباط برقرار کنه .

خلاصه اینکه بانک داخلی می خوام ... چطور با بانک داخل پروژه ام ارتباط برقرار کنم ؟

L u k e
یک شنبه 23 مرداد 1390, 10:25 صبح
من بهت پیشنهاد می کنم از h2 استفاده کن
واقعا خداس
من چند وقت پیش یه پروژه رو با java db کار کردم اذیت کرد خیلی فایلاش زیاده و هجم db شم خیلی می شه .

بهزاد علی محمدزاده
یک شنبه 23 مرداد 1390, 11:18 صبح
سلام
اتفاقا يكي دو روزه كه باهاش آشنا شدم ، يكي اين و به جاي db توي يكي از فروم ها پيشنهاد كرده بود . شايد stackoverflox بود !

db خيلي از من انر‍زي گرفته ... اصلا نتونستم رو پروژه ام كار كنم ، همش دنبال اين بودم ... تازه هم به جاوا سويچ كردم ، نمي دونم من بلد نيستم باهاش كار كنم يا اين يه مقدار بد قلقه !

شما مي دوني با h2 چطور مي تونم بانك رو توي پوشه پروژه ام داشته باشم ؟ ( يعني هرجا پرو‍ژ ه ام رفت ، بانك هم همراهش باشه ... )

نمي دونم شايد من وقتي به اينصورت مسير ميدم :

"jdbc:derby:C:/mybank"

بشه مسير رو طوري داد كه پوشه جاري رو بشناسه ! مثلا اينجوري :

"jdbc:derby:../mybank"

هركدوم و كه امتحان مي كنم جواب نداده ... اما وقتي با netbeans يه دسكتاپ پرو‍ژه از نوع database انتخاب مي كنم ، و بعد با بانك ارتباط برقرار مي كنه ، هرجا كه پرو‍ژه ميره بانك رو شناسايي مي كنه و با jtable ، قابليت ويرايش و ... رو هم داره ، ide‌ چيكار مي كنه كه من نمي دونم ؟

L u k e
یک شنبه 23 مرداد 1390, 12:58 عصر
خیلی بدقلقه آره h2 خیلی راحته و دستوراتشم زیادن تغریبا تمامی دستورات mysql رو داره از همه جالب تر اینه که connection یک mg بیشتر نیست
واسه مسیر دادن هم باید از user.dir استفاده کنی
System.getProperty("user.dir");

بهزاد علی محمدزاده
یک شنبه 23 مرداد 1390, 15:38 عصر
درست شد ، ممنون ...

من و باش این و نمی بینیم تو جستجو هام : user.dir User's current working directory

البته این رو هم امتحان کرده بودم اما یه مشکلی داشتم این بود که فایل اجرایی من توی پوشه dist قرار می گرفت ! وقتی هم اون و اجرا می کردم ، مسیر جاری و کاری من اونجا حساب میشد که بانکی وجود نداشت !

بانکم و کپی کردم توی پوشه dist و برنامه رو بردم روی یه سیستم دیگه تست کردم و جواب داد ...

دوستانی که بعدا اینجا رو می خونن ، دقت کنید که می تونید از user.dir خروجی بگیرید ، توی jlabel و یا ... نشون بدین ، اینجوری می فهمید که بانک تون کجاست و برنامه چه شاخه ایی رو داره بهتون نشون میده ...

انشاء الله وقت بشه و بهتر یاد بگیریم یه مقاله آموزش در این زمینه تهیه کنیم ...

spiderman200700
چهارشنبه 02 شهریور 1390, 13:08 عصر
دوستان عزیز میشه یه کم در مورد h2 توضیح بدید.
اصلا h2 چی هست؟
و چطوری باید توی نت بینز ازش استفاده کنم.
ممنون از همگی.

L u k e
چهارشنبه 02 شهریور 1390, 13:33 عصر
h2 هم یه database engine هست که خیلی خیلی خیلی راحت سریع و حجمش هم 1 mg هست ( منظورم کانکشنشه ) خودش یه editor تحت وب ساده مثل phpmyadmin داره
که 2 حالت embeded و server داره در حالت embeded که همون file ای هست 1 فایل بیشتر وجود نداره خیلی هم حجمش کمه برخلاف java db که وقتی یه Database می سازی 10 - 20 تا فایل و پوشه می سازه و به مرور زمان حجمشون خیلی زیاد می شه
اکثر دستورات sql رو support می کنه مثل limit که تو derby وجود نداشت و یه مشکل دیگه که تو derby وجود داشت این بود که sql نوشتن توش خیلی سخت بود مثلا اول همه ی table ها باید می زدی app و اسم Column ها رو باید می زاشتی تو "" و این خیلی عذاب آور بود سمت کد واسه آدم و یه چیز دیگه اینه که performance شم خیلی بالاست
کلا من از وقتی که رفتم سراغش هیچ مشکلی باش نداشتم خیلی خیلی خیلی جواب می ده واسه نرم افزارهایی که نیاز به database embeded دارن
free هم هست
اینم سایت سازندشhttp://www.h2database.com/html/main.html

spiderman200700
چهارشنبه 02 شهریور 1390, 16:38 عصر
h2 هم یه database engine هست که خیلی خیلی خیلی راحت سریع و حجمش هم 1 mg هست ( منظورم کانکشنشه ) خودش یه editor تحت وب ساده مثل phpmyadmin داره
که 2 حالت embeded و server داره در حالت embeded که همون file ای هست 1 فایل بیشتر وجود نداره خیلی هم حجمش کمه برخلاف java db که وقتی یه Database می سازی 10 - 20 تا فایل و پوشه می سازه و به مرور زمان حجمشون خیلی زیاد می شه
اکثر دستورات sql رو support می کنه مثل limit که تو derby وجود نداشت و یه مشکل دیگه که تو derby وجود داشت این بود که sql نوشتن توش خیلی سخت بود مثلا اول همه ی table ها باید می زدی app و اسم Column ها رو باید می زاشتی تو "" و این خیلی عذاب آور بود سمت کد واسه آدم و یه چیز دیگه اینه که performance شم خیلی بالاست
کلا من از وقتی که رفتم سراغش هیچ مشکلی باش نداشتم خیلی خیلی خیلی جواب می ده واسه نرم افزارهایی که نیاز به database embeded دارن
free هم هست
اینم سایت سازندشhttp://www.h2database.com/html/main.html

ممنون از توضیحاتتون.
از همین امروز میرم سراغ h2،چون منم همین مشکل شناسایی مسیر جاری بانک رو دارم.
بازم ممنون.

بهزاد علی محمدزاده
چهارشنبه 02 شهریور 1390, 17:41 عصر
منم به h2 سویچ کردم ... و ازش راضی هستم ...

مشکل مسیر جاری اینه که وقتی ما توی netbeans روی برنامه کار می کنیم ... مسیر پیش فرض ما پوشه پروژه است ... اما وقتی برنامه رو build می کنیم و بعد از توی پوشه dist اون و اجرا می کنیم ... در واقع مسیر برنامه عوض شده و قادر به شناخت مسیر نیست .. حالا اگه بانک رو از توی پوشه پروژه کپی کنیم به dist مشکل حل میشه و اون ومی شناسه ...

می تونیم مسیر هایی هم بهش بدیم ... مثل پوشه جاری کاربر که من این و نمی پسندم چون برای ویندوز مسیر درایو سی انتخاب می کنه و اونجا در معرضه آسیب هست ...


به هر حال این مشکل مسیر و خیلی ها تو فروم های مختلف داشتن ...

h2 یه پی دی اف تو سایت خودش داره که خیلی خوب و روان توضیح داده ...

بهزاد علی محمدزاده
چهارشنبه 02 شهریور 1390, 17:47 عصر
luke شما در مورد این مسیر جاری پروژه به هیچ مشکلی بر نخوردی ؟ از چه روشی استفاده می کنی ؟ تجربه تو در اختیارمون بذار ...

L u k e
چهارشنبه 02 شهریور 1390, 18:01 عصر
من با system.getprogerty("user.dir") مسیر جاری jar فایل رو بدست می آرم و فایل db رو هم گذاشتم کنار jar فایله

sina_oonline
چهارشنبه 02 شهریور 1390, 18:35 عصر
ببخشید من حس می کنم درست موضوع رو نگرفتم این الان فرقش با mysql یا سایر دیتابیس ها چیه؟

بهزاد علی محمدزاده
پنج شنبه 03 شهریور 1390, 00:45 صبح
این یه بانک کوچیک ، و تو کاره که نیاز به مدیریت مثل mysql نداره ... مثلا یه برنامه تک کاربره دارید ... مثل یه کتابخانه کوچیک ... اینجا که نمیشه از mysql استفاده کزد ، یعنی به کاربر بگی باید mysql رو سیستمت نصب کنی تا بتونی از برنامه استفاده کنی !

یا مثلا یه دفترچه تلفن ...

در این نرم افزار های از بانک های کوچیک تری مثل h2 یا javadb استفاده می کنن ... access هم کاربرد داره .

بهزاد علی محمدزاده
پنج شنبه 03 شهریور 1390, 00:52 صبح
من با system.getprogerty("user.dir") مسیر جاری jar فایل رو بدست می آرم و فایل db رو هم گذاشتم کنار jar فایله

درسته ... با h2 اگر فایل db رو کنار jar بذاری دیگه نیازی به بدست اوردن مسیر جاری نیست ... اون خودش اونجا رو چک میکنه . اگر بانکی با اون نام اونجا باشه. ارتباط برقرار می کنه اگر هم نباشه ایجاد می کنه .

spiderman200700
شنبه 05 شهریور 1390, 13:00 عصر
من یه برنامه ی دفترچه یادداشت نوشتم و دیتا بیسش رو از Access به h2 تغییر دادم.الآنم خیلی عالی داره کار میکنه.یعنی برنامه رو هر جا که میبرم بانکم کنار فایل jar ساخته میشه.
کد اتصالم به h2 اینه:
Class.forName("org.h2.Driver");
connection = DriverManager.getConnection("jdbc:h2:DataBaseName", "", "");

L u k e
شنبه 05 شهریور 1390, 13:31 عصر
خیلی خیلی حال می کنم باش واقعا تکه
جم و جور ساده editor اش هم خیلی باهاله
سریعم هست چقدر

spiderman200700
شنبه 05 شهریور 1390, 13:43 عصر
خیلی خیلی حال می کنم باش واقعا تکه
جم و جور ساده editor اش هم خیلی باهاله
سریعم هست چقدر

آره واقعا عالیه.
من دیگه هیچ مشکلی با database ندارم.
خدا خیرت بده که h2 رو بهمون معرفی کردی.:تشویق::تشویق: