PDA

View Full Version : داده فارسی Access در جاوا



Persian_Golf
پنج شنبه 19 اردیبهشت 1387, 00:07 صبح
سلام. من با Java به Access وصل شدم.
موقعی که می خوام داده های فارسی Access رو با جاوا بخونم، به جای حروف فارسی علامت سوال میذاره ، ممنون میشم اگه کسی بهم کمک کنه.:گریه:

mazdadoost
پنج شنبه 19 اردیبهشت 1387, 00:15 صبح
دوست عزیز :
اطلاعات بیشتری از محیط توسعتون بدین از قبیل ویرایش SDK , jre-IDE و ورژن سیستم عامل مورد استفاده.
و حتی ورژن فایل Access. و اینکه دارید با Swing کار می کنید یا برای وب و یا ...

rezaTavak
پنج شنبه 19 اردیبهشت 1387, 08:13 صبح
اطلاعات با کد پیچ ۱۲۵۶ است باید به Utf-8 تبدیل کنید.

Persian_Golf
پنج شنبه 19 اردیبهشت 1387, 10:50 صبح
من از Oracle JDeveloper استفاده میکنم. JDK5.0 که روی خود JDeveloper نصب شده.
سیستم عامل Windows Server 2003 و با swing کار میکنم و بالاخره از Access 2007 استفاده میکنم.

Persian_Golf
پنج شنبه 19 اردیبهشت 1387, 10:51 صبح
خواهشاً میشه بیشتر توضیح بدید.

mazdadoost
پنج شنبه 19 اردیبهشت 1387, 11:18 صبح
بنده تا الان با IDE شما کار نکردم :
امیدوارم راهنمایی های من مفید واقع بشه :
1-به احتمال 95 در صد شما از درایور ODBC:JDBC استفاده میکنید.ما یک پروژه وب داشتیم که چند سال پیش با کلد فوسیون انجام میدادیم.متوجه شدیم که درایور سان و البته از UTF برای اکسس پشتیبانی نمی کنن!البته این برای jre 1.4 بود!الان بعیده این مشکل باشه.باری اطمینان از هماهنکی کد پیچ بین IDE - Database و درایور شما یه پروژه درست کنید و از دیتا بیسی جز اکسز استفاده کنید اگه همه چی درست باشه از IDE , Jre مطمعن میشید
2-فایل هاتون رو به ورژن 2003 اکسس تبدیل کنید.فایل های دیتا بیس 2007 اصولا سازگاری با ورژن های قبل رو فقط در ادعاهای میکروسافت دارن.و بعد از تبدیل حتما چک کنید اطلاعات به Encoding -UTF-8 در تیبل هاتون چه در محیط IDE درمحیط اکسز وارد شدن!
امیدوارم مفق باشید.

Persian_Golf
پنج شنبه 19 اردیبهشت 1387, 21:54 عصر
از راهنماییتون خیلی ممنونم.
مشکل حل شد.
بایستی تو متد getConnection از property ی charSet استفاده میکردم و charSet رو با UTF8 مقدار دهی می کردم.

ممنونم.

mazdadoost
پنج شنبه 19 اردیبهشت 1387, 23:13 عصر
دوست عزیز :
خیلی خوشحالم که به نتیجه رسیدین.حالا که به مقصود رسیدن بد نست برنامه بعدی تون رو با دیتا بیس Emeded مثل Derby کار کنید.این رو عرض میکنم چون اخساس کردم ترجیح دادین از دیتا بیسی مثل اکسز که نساز به سر ور نداره استفاده کنید.!کار با دربی خیلی اسون لذت بخش و میتونم بگم بارها حرفه ای تر و کاراتر و البته مثل خود جاوا مثتقل از پلات فرمتره!
این دیتا بیس دیتا بیس پیش فرض JDK 6 هست.و شما رو از هر گونه دیتا بیسی برای کار های معمول در حد جاوا بدون هیج تنظیم اظافی بی نیاز میکنه.اسمش هم در جاوا شده جاوا DB! این دیتا بیس از تریگر -روال های ذخیره شده - فانکشن - کش و از همه مهمتر Connecton Pooling بشتیبانی میکنه.در مد سرور هم میتونید اجراش کنید...

Persian_Golf
جمعه 20 اردیبهشت 1387, 00:20 صبح
از راهنماییتون خیلی متشکرم.
فکر کنم یه جایی تو منوی Application Server PE9 دیدمش. ولی ازش استفاده نکردم.
حتماً از راهنمایی های شما استفاده می کنم.

mazdadoost
جمعه 20 اردیبهشت 1387, 08:12 صبح
دوست من :
در منو های PE شما میتونید برای این database در محیط Managed خود Apllication Server برای این Database و دیتا بیس های دیگه دیتا سورس های jdbc تعریف کنید. ویا کاری کنید که دیتا بیس از Pooling خود PE استفاده کنه که خیلی خوب Scale میشه.اما این برای محیط های توزیع شده خوبه!همونطور که گفتم از javaDB می تونید در محیط های Unmanaged مثل برنامه ای که با اکسز نوشتین استفاده کنید بدون Application Server! و این یعنی شما برای انتشار برنامه هاتئن لازم نیست فایل اکسز که میشه با یه برنامه اکسز بازش کرد یا اینکه مجبورید حالا چه دستی چه با کد Native براش ODBC تعریف کنید رو منتشر کنید.همه چیز حین اجرا به به صورت درونی برای شما ساخته میشه. برای آشنایی بیشترتون با این دیتا بیس یه نمونه از ساختار تولیدیش رو در اختیارتون میذارم!ببینید چه قدر شبیه ساختار مثلا Sqlserver هست:

handinux
جمعه 20 اردیبهشت 1387, 08:29 صبح
کاش Derby روی CLDC هم پشتیبانی می شد.بعضی مواقع یک راه حل مناسب است.در ضمن از SQL هم پشتیبانی می کند.
یک سوال : راستی بانک های Derby حین runtime ایجاد می شوند؟ یعنی نمی توان یک فایل دیتابیس derby را در یک app دیگر استفاده کرد؟

mazdadoost
جمعه 20 اردیبهشت 1387, 09:27 صبح
دوست عزیز :
چرا که نه!اصولا دیتا بیس ها همشون حین رانتایم در اختیار برنامه هستن.منتها بعضی مثل اکسز Passive هستن بعضی مثل Derby اکتیو هستن و البته صد در صد SQL و سازگار با SQLJ هست که استاندارد تریگر رو پیاده کرده.تریگر جزئی از استاندارد SQL !.برای استفاده سایر برنامه ها از دیتابیسهای دربی : مثال :
با این UrlConnection یه دیتابیس جدید ساخته میشه اگر قبلا ساخته نشده باشه :
jdbc:derby:databaseName;create=true
بعد می تونید در این یا هر برنامه دیگه ای با همین Url بهش دسترسی داشته باشید اما قبل از اون باید Home رو که دربی باید دنبال روت دیتابیس شما بگرده بهش معرفی کنید :
derby.system.home این یه Property که هم با System.setProperty هم با ارگومان میتونید ستش کنید بعد از اون بقیه کار ها رو به درایور بسپارید.
روش ها متنوع هست یه مثال که جالبتره :
فکر کنید همین دیتابسی که من تو ارشیو رو سایت گذاشتم فایل آرشیو شامل دیتا بیس testDB باشه اگه این فایل رو با تغیر پسوند به jar تو Classpath برنامه بذارید کافیه :jdbc:derby:/testDb رو استفاده کنید!کلاس پت رو به کل سیستم معرفی کنید کل سیستم این دیتابسی رو میبینن!البته در این حالت دیتابیس ReadOnly!
اینم یه روش ولی توصیه نمی کنم قابلیت انتقال رو میاره پایین :jdbc:derby:c:/databases/salesdb jdbc:derby:salesdb
متاسفانه بر خلاف دات نت جاوا هنوز راه حل همه گیری برای موبایل دیتا بیس نداره!اما بعضی موبایل ها jsr ش رو پیاده کردن و دیتا بیس هایی هستن که از KVM پشتیبانی کنن.البته اگه منصف باشیم مگه چند درصد موبایل ها ویندوز موبایل هستن؟در مقابل جاوا خیلی کم!

Persian_Golf
دوشنبه 23 اردیبهشت 1387, 14:48 عصر
خیلی ممنون. راهنماییاتون واقعاً جالبه. از بابت فایلها هم متشکرم.

handinux
پنج شنبه 22 بهمن 1388, 23:32 عصر
سلام.متاسفانه من هم در خواندن فارسی از اکسس مشکل پیدا کردم
منتها راه حلی که برای دوستمون جواب داده برای من جواب نمی ده
من هم از charSet استفاده کردم اما درست نشد


Properties language = new Properties();
language.put("charSet", "UTF8");
language.put("userName","");
language.put("password","");

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String filename = "d:/bank.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;READONLY=true}";
//con = DriverManager.getConnection( database ,"","");
con = DriverManager.getConnection( database ,language);


بانک من هم اکسس 2003 هست

sg.programmer
جمعه 23 بهمن 1388, 18:24 عصر
من با MySQL با همین برخورد کردم
لطفا کسی کمک کنه