-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
این اعمالی که میگید داخل کلاس آداپتر لیست ویو انجام میشه
برای اینکه به آیدی چیزی که کلیک شده دسترسی داشته باشید، شما باید علاوه بر سایر اطلاعاتی که به آداپتر میفرستید، یک لیست هم از آیدی شون بفرستید تا با پوزیشن دسترسی داشته باشید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
سلام
کدهای مربوط به قسمتی که برمیگردید رو بذارید تا ببینم دقیقا چه کاری انجام میشه، شاید بتونم راهنمایی تون کنم
سلام
من از دیروز کد ها رو فرستاندم.ولی در زمان ارسال اعلام کردند که پست باید به تایید مدیر سایت برسه.که با گذشت یک روز تایید نشده !
چطور کد رو بفرستم؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
zikimiki
سلام
من از دیروز کد ها رو فرستاندم.ولی در زمان ارسال اعلام کردند که پست باید به تایید مدیر سایت برسه.که با گذشت یک روز تایید نشده !
چطور کد رو بفرستم؟
مگه چطوری فرستادین ؟؟؟
همچین موردی نداریم
کدهای خود رو مثل پیام(همینجا) بفرست البته داخل تگ های مخصوص خود قرار دهید تا خوانا باشند
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام.
مي خوام ديتابيس رو ياد بگيرم.
آموزش ها و روش ها زياد هست . تو اين تاپيك هم يكي دو تا هست.
بهترين روش كدوم هست؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
سلام
این اعمالی که میگید داخل کلاس آداپتر لیست ویو انجام میشه
برای اینکه به آیدی چیزی که کلیک شده دسترسی داشته باشید، شما باید علاوه بر سایر اطلاعاتی که به آداپتر میفرستید، یک لیست هم از آیدی شون بفرستید تا با پوزیشن دسترسی داشته باشید
نحوه رفتن به یه اکتیویتی دیگه توی کلاس آداپتر چطوریه؟
کد من: (ارور میده)
Intent MyIntent;
MyIntent = new Intent(ActivityFehrest.this, ActivityDetail.class);
startActivity(MyIntent);
روی ActivityFehrest.this و startactivity ارور میگیره
ActivityFehrest همون اکتیویتی هست که کل لیست ویو رو نشون میده
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
متاسفانه با نمیشه کد رو فرستاد این پیام رو میده:
Thank you for posting! Your post will not be visible until a moderator has approved it for posting.
-
1 ضمیمه
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
mojniknam
نحوه رفتن به یه اکتیویتی دیگه توی کلاس آداپتر چطوریه؟
کد من: (ارور میده)
Intent MyIntent;
MyIntent = new Intent(ActivityFehrest.this, ActivityDetail.class);
startActivity(MyIntent);
روی ActivityFehrest.this و startactivity ارور میگیره
ActivityFehrest همون اکتیویتی هست که کل لیست ویو رو نشون میده
Intent MyIntent;
MyIntent = new Intent(context, ActivityDetail.class);
startActivity(MyIntent);
اگه باز به StartActivity خطا گرفت بصورت زیر امتحان کن
context.startActivity(MyIntent);
این بحث چه ربطی به اینجا داره اخه دوست عزیزم
اگه به نتیجه نرسیدید اول جستجو کنید در انجمن اگه مطلب مناسبی پیدا نکردید تاپیک مجزا بزنید و از این تاپیک برای این سوال استفاده نفرمایید
باتشکر
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
من توی اکتیویتی که لیست ویو رو نشون میده اول شماره ردیف لیست ویو رو بدست می آوردم و با دستوراتی که ذکر کردم، اکتیویتی دوم رو فراخوانی می کردم و با شماره ردیف لیست ویو، ردیف توی دیتابیس رو نشون میدادم. بعد متوجه شدم این شیوه کد نویسی صحیح نیست (لازم به ذکر دلایل نیست) و باید شماره ردیف دیتابیس رو پیدا کنم
اینجا بود که سوال پرسیدم و راهنمایی کردن از کلاس آداپتور
ولی با منتقل کردن کدهای کلیک به آداپتور ، ارورهای بالا رو میداد و نمیشد اکتیویتی رو فراخوانی کرد
ربطش اینجا بود جناب سعید! ممکنه برای دوستانی که مثل من برای کار کردن با این کتابخانه تازه کار هستن پیش بیاد
ولی باز هم ممنون
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
zikimiki
فایل رو پیوست کردم.
این کدتون مال اکتیویتی خوندن داستان هست
کد اکتیویتی که لیست داستان ها هست رو هم بذارید، مهم اونجاست که چه تغییری انجام میشه
-
1 ضمیمه
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
این کدتون مال اکتیویتی خوندن داستان هست
کد اکتیویتی که لیست داستان ها هست رو هم بذارید، مهم اونجاست که چه تغییری انجام میشه
خدمت شما.
فیلتر های من مواردی مثل : تغذیه تناسب اندام سلامت عموی و روان و... هستش که با کلیک بر روی دکمه ی خودشون نشون داده می شن.ولی وقتی که دکمه بک رو بزنم کلا بر می گرده و همه مطالب رو نشون میده.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
zikimiki
خدمت شما.
فیلتر های من مواردی مثل : تغذیه تناسب اندام سلامت عموی و روان و... هستش که با کلیک بر روی دکمه ی خودشون نشون داده می شن.ولی وقتی که دکمه بک رو بزنم کلا بر می گرده و همه مطالب رو نشون میده.
دوست عزیز مشکل شما ارتباطی به دیتابیس نداره
مشکل شما فکر میکنم از داخل تابع onResume هست که دوباره اطلاعات رو ست میکنه
شما متغیر isAll رو تاجایی که دیدم بعد از اینکه توی onCreate مقدار true دادید، جایی false نکردید
در نتیجه این شرط همیشه اجرا میشه و تمام محتوای لیست رو نمایش میده
@Override
protected void onResume() {
super.onResume();
if (isAll) {
dastanha = db.getAllContacts();
}else {
dastanha=db.findFAVContacts();
}
refreshDisplay();
loadData();
if (lstState != null)
getListView().onRestoreInstanceState(lstState);
lstState = null;
}
خواهش میکنم توی این تاپیک تنها سوالات مربوط به دیتابیس رو مطرح کنید تا سایر عزیزان بتونن از مطالب و سوال و جواب ها، بهترین استفاده رو داشته باشند
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
1.چطور می تونم علامت های " ' ( ) رو با این کد وارد دیتابیس کنم؟مثلا اسم یک دانش آموز ")(' هست.
mydb.execSQL("INSERT INTO " + TABLE + "(NAME, PLACE) VALUES('آدرس','اسم دانش آموز')");
2.سوال بعد اینکه چطور دو شرط ( where _id = 8 و where _NAME = "saeid" )یا بیشتر برای آپدیت بذارم؟
mydb.execSQL("update tableName set fieldName = 'امین' where _id = 8");
3.چطور موقع تعریف Cursor براش شرط بذارم که مثلا ردیف هایی که id>6 و name=="amin" هست رو شامل بشه؟
این همه ردیف ها رو شامل میشه:
Cursor cursor = mydb.rawQuery("SELECT * FROM "+ TABLE, null);
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
Amin-rz
1.چطور می تونم علامت های " ' ( ) رو با این کد وارد دیتابیس کنم؟مثلا اسم یک دانش آموز
")(' هست.
mydb.execSQL("INSERT INTO " + TABLE + "(NAME, PLACE) VALUES('آدرس','اسم دانش آموز')");
متوجه نشدم!
نقل قول:
نوشته شده توسط
Amin-rz
2.سوال بعد اینکه چطور دو شرط ( where _id = 8 و where _NAME = "saeid" )یا بیشتر برای آپدیت بذارم؟
mydb.execSQL("update tableName set fieldName = 'امین' where _id = 8");
در دادن شرط بین هر شرط همان طور که خودتان فرمودید از " و " استفاده میشه البته " و " انگلیسی یعنی " and " به مثال زیر توجه نمایید
mydb.execSQL("update tableName set fieldName = 'امین' where _id = 8 and tableName='امین'");
نقل قول:
نوشته شده توسط
Amin-rz
3.چطور موقع تعریف Cursor براش شرط بذارم که مثلا ردیف هایی که id>6 و name=="amin" هست رو شامل بشه؟
این همه ردیف ها رو شامل میشه:
Cursor cursor = mydb.rawQuery("SELECT * FROM "+ TABLE, null);
اینم مثل بگیه از شرط استفاده میشه به مثال زیر توجه نمایید :
Cursor cursor = mydb.rawQuery("SELECT * FROM "+ TABLE +" where name='amin' ", null);
توضیحات تکمیلی :
1) در استفاده از ' ' برای حروف الزامیست اما برای اعداد بشرطی که نوع جدول int یا integer تعریف شده باشه نیاز نمی باشد
2) برای برابر قراردادن فیلدی نیاز به 2تا مساوی نیست همین یکی کافیست
3) تعداد شرط دادن در Query محدود نمی باشد
4) از LIKE , NOT LIKE , OR هم میتوان در شرط ها استفاده کرد
LIKE )
1)
Cursor cursor = mydb.rawQuery("SELECT * FROM "+ TABLE +" where name LIKE 'amin' ", null);
2)
Cursor cursor = mydb.rawQuery("SELECT * FROM "+ TABLE +" where name LIKE '%amin' ", null);
3)
Cursor cursor = mydb.rawQuery("SELECT * FROM "+ TABLE +" where name LIKE 'amin%' ", null);
4)
Cursor cursor = mydb.rawQuery("SELECT * FROM "+ TABLE +" where name LIKE '%amin%' ", null);
به % در Query ها دقت نمایید
این % میگه مثلا کلمه ای که با amin شروع شده یا پایان یافته یا میان آن نوشته شده رو بیاب
قابل ذکر است که معنی آن با جابجای % در query تغییر می کند
NOT LIKE)
فکر کنم نیاز به توضیح نداره همینطور که مشخص هست NOT هست یعنی مخالف qury بالا
OR)
اینم مشخص هست " یا "
توجه مهم :
اگر در Query ای که از انواع شرط استفاده کرده باشید بهتر است داخل ( ) بندازید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
دستت درد نکنه سعید جان.:قلب:
در مورد سوال اول شما فرض کن آدرس یه نفر رو می خوای وارد کنی و آدرسش اینه : ایران"استان تهران
به این صورت وارد می کنم ارور میده:
mydb.execSQL("INSERT INTO " + TABLE + "(PLACE) VALUES('ایران"استان تهران')");
در واقع علامت " که داخل آدرس هست باعث میشه کد به هم بریزه.:متفکر:
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
Amin-rz
دستت درد نکنه سعید جان.:قلب:
خواهش می کنم دوست عزیز
نقل قول:
نوشته شده توسط
Amin-rz
در مورد سوال اول شما فرض کن آدرس یه نفر رو می خوای وارد کنی و آدرسش اینه :
ایران"استان تهران
به این صورت وارد می کنم ارور میده:
mydb.execSQL("INSERT INTO " + TABLE + "(PLACE) VALUES('ایران"استان تهران')");
در واقع علامت
" که داخل آدرس هست باعث میشه کد به هم بریزه.:متفکر:
بله دقیقا به " و ' خطا میگیره در Query
خوب چه اصراری داری از " استفاده کنی ؟
از - یا Space یا مثلا * یا _ استفاده کن خوب :لبخند:
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
آخه قراره پیامک وارد دیتابیس کنم و خیلی از پیامک ها حتما " , ' توشونه.
بعد هم یه جایی می خوام از کاربر تکست بگیرم و تو دیتابیس بذارم شاید کاربر نیاز باشه " یا ' وارد کنه.
یه جایی خوندم یه علامتی قبل از" میذاشتن که اینطوری نشون میداد " بخشی از رشته هست و دیگه تو کد تاثیر نمیذاشت و کد رو به هم نمیریخت.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
فکر کنم \ رو میگین
تست نزدم چک کنید ببینید جواب میده "\
mydb.execSQL("INSERT INTO " + TABLE + "(PLACE) VALUES('ایران"\استان تهران')");
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نه اینا رو چک کردم نشد :(
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
Amin-rz
1.چطور می تونم علامت های " ' ( ) رو با این کد وارد دیتابیس کنم؟مثلا اسم یک دانش آموز
")(' هست.
mydb.execSQL("INSERT INTO " + TABLE + "(NAME, PLACE) VALUES('آدرس','اسم دانش آموز')");
2.سوال بعد اینکه چطور دو شرط ( where _id = 8 و where _NAME = "saeid" )یا بیشتر برای آپدیت بذارم؟
mydb.execSQL("update tableName set fieldName = 'امین' where _id = 8");
3.چطور موقع تعریف Cursor براش شرط بذارم که مثلا ردیف هایی که id>6 و name=="amin" هست رو شامل بشه؟
این همه ردیف ها رو شامل میشه:
Cursor cursor = mydb.rawQuery("SELECT * FROM "+ TABLE, null);
سلام
من هم دارم کار با دیتابیس رو یاد میگیرم.
از سایت زیر هم استفاده کنید که خیلی خوب انواع کوئری ها رو با مثال آموزش میده.
http://www.w3schools.com/sql/default.asp
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
چرا من از متد :
mydb = MyDataBase.getReadableDatabase();
استفاده کردم ولی تونستم تو جدول اطلاعات وارد کنم؟
رفتم به مسیر : data/data/database و دیتابیسو باز کردم دیدم اطلاعات وارد شده.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
چطور ميشه ديتابيس آماده رو با روشي كه در پست 9 هست كپي كنم تو data/data/database
بعد براي خوندن ، آپديت و ... از روش پست اول اضافه كنم؟
كه ديگه نياز به getReadaleDatabase() و getWritaleDatabase()
نباشه.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
واسه کپی کردن فکر کنم بتونی از کدی که در " این هم کد " با موضوع پشتیبانگیری و بازیابی قرار دادم و شما از قسمت بازیابیش با کمی تغییرات استفاده کنی
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
Amin-rz
چطور ميشه ديتابيس آماده رو با روشي كه در پست 9 هست كپي كنم تو data/data/database
بعد براي خوندن ، آپديت و ... از روش پست اول اضافه كنم؟
كه ديگه نياز به getReadaleDatabase() و getWritaleDatabase()
نباشه.
چرا میخواین همچین کاری انجام بدید؟
به نظرم اینکار پیچوندن لقمه دور سر هست
این لایبری بسیار کامل هست و شما رو از استفاده از هر کد دیگه ای بی نیاز میکنه
وقتی شما میتونید خیلی ساده با getWritable از دیتابیس استفاده کنید، چه نیازیه که به روش پست اول دیتابیس رو با مسیرش باز کنید ؟
شما همیشه از getWritable استفاده کنید، کاری نداشته باشید که میخواین بخونین یا بنویسین
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام به دوستان.
در سورت بر اساس یک فیلد، حروف پ ژ گ چ در آخر قرار میگیرن، راهی برای درست کردنش هست؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
جواد ملاولی
سلام به دوستان.
در سورت بر اساس یک فیلد، حروف پ ژ گ چ در آخر قرار میگیرن، راهی برای درست کردنش هست؟
کسی قبلا با این مساله مواجه نشده؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
جواد ملاولی
سلام به دوستان.
در سورت بر اساس یک فیلد، حروف پ ژ گ چ در آخر قرار میگیرن، راهی برای درست کردنش هست؟
میتونی مثل Query زیر استفاده کنی
select * from username order by name like '%ژ' desc
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
saeed_g21
میتونی مثل Query زیر استفاده کنی
select * from username order by name like '%ژ' desc
ممنون، تست کردم درست شد.
این چند ساله که با انواع دیتابیس سر و کار داشتم با حرف ک و ی به مشکل خورده بودم ولی با پژگچ نه.
ولی نفهمیدم اون like که بعد از order by گذاشتی چکار می کنه؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
در دستور insert مگه لازمه ستونی رو که در sqlite (جدول اماده) AUTOINCREMENT تعریف کردیم ، قید کنیم ؟ ID رو اتونامبر گرفتم اما نمیدونم چرا وقتی نام ، فامیل رو میزنم و insert میکنم ، فیل ID در هر ردیف خالی میمونه و اوتوماتیک شماره نمیزنه ، آیا در دستور insert باید id هم ذکر بشه ؟ چجوری؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
با این خط دوتا ستون رو میفرسته امام ستون id رو که autonumber ، خالی میزاره ، نمیدونم چرا id اتوماتیک پر نمیشه
mydb.execSQL("INSERT INTO tdb (NAME, FAMILY) VALUES ('" + name + "', '" + family + "')");
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
جواد ملاولی
ممنون، تست کردم درست شد.
این چند ساله که با انواع دیتابیس سر و کار داشتم با حرف ک و ی به مشکل خورده بودم ولی با پژگچ نه.
ولی نفهمیدم اون like که بعد از order by گذاشتی چکار می کنه؟
ببین اون ک و ی که میگی ک و ی عربی هستند کافیه در اونارو با ک و ی فارسی Replace کنی مشکل حل میشه
شما گفته بودید " حروف پ ژ گ چ در آخر قرار میگیرن " برای همین از Like استفاده کردم که ژ هایی که در اخر داره رو سورت کنه یک نمونه بود که الهام بگیری که مثل اینکه مشکل تان حل شده
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
meysam jahedi
با این خط دوتا ستون رو میفرسته امام ستون id رو که autonumber ، خالی میزاره ، نمیدونم چرا id اتوماتیک پر نمیشه
mydb.execSQL("INSERT INTO tdb (NAME, FAMILY) VALUES ('" + name + "', '" + family + "')");
اگه مشخصات id رو همانند زیر ایجاد کردید نباید مشکلی داشته باشید
id integer primary key autoincrement
ولی اگه باز مشکل رفع نشده باشه میتوانید مثل مثال زیر استفاده نمایید
mydb.execSQL("INSERT INTO tdb (ID,NAME, FAMILY) VALUES (id+1,'" + name + "', '" + family + "')");
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
ا دستورات مقابل دوتا ستون name و family رو میخوام از دیتا بیس بخونم ، اگه بخوام به طریق لیست ویو سفارشی نشون بدم به چه صورت ؟
یه فرم به نام row دارم که دوتا textview برای name و family گذاشتم ، میخوام این دو ستون رو از طریق سفارشی اونجا تو لیست ویو نشون بدم ، میشه دستوراتش رو بنویسید؟https://barnamenevis.org/images/smilies/yahoo/116.gifhttps://barnamenevis.org/images/smilies/yahoo/115.gifhttps://barnamenevis.org/images/smilies/yahoo/114.gifhttps://barnamenevis.org/images/smilies/yahoo/116.gif یعنی توی یک آداپتر میشه همزمان چند ستون رو داد؟public void refresh(){
mydb=mydata.getReadableDatabase();
Cursor recdaryafti = mydb.rawQuery("select* from tdb", null);
NAME = new String[recdaryafti.getCount()];
String[] FAMILY = new String[recdaryafti.getCount()];
int i = 0;
if(recdaryafti.moveToFirst()){
do{
NAME[i] = recdaryafti.getString(1);
FAMILY[i] = recdaryafti.getString(2);
i++;
}
while(recdaryafti.moveToNext());
}
recdaryafti.close();
mydb.close();
list.setAdapter(new ArrayAdapter <String>(this,R.layout.row,R.id.row_txtname,NAME )) ;
}
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام دوستان گل
اقا من توی دیتابیس به یه مشکلی خوردم که خیلی پیچیده نیست. فقط چون من تجربه م کمه به مشکل خوردم.
من یه دیتابیس ساختم ولی فکر میکنم درست اتصال پیدا نکرده.
تمام اطلاعات درمورد کلاس و دیتابیس رو توی این تاپیک قرار دادم ولی کسی جوابی نداده.
https://barnamenevis.org/showthread.p...88%DB%8C%D8%AF
لطفا اساتید و دوستانی که تجربه دارن بهم کمک کنن. خیلی وقته که دنبال رفع مشکل هستم ولی کسی کمکی نکرد.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
تشکر فراوان از آقا poorman و آقا hamedjj
آقا من دو روز میشه دارم با برنامم ور میرم واسه اجرای اون روی اندروید 2.2 که همش موقع کار با دیتابیس دچار مشکلاتی می شد،
راه حل های زیادی رفتم، تا بالاخره به پروژه android-sqlite-asset-helper در گیت بر خوردم، دوستم بهم گفت که توی barnamenevis.org آموزش فارسیش هست، سری سرچ کردم توی گوگل و این تاپیک رو پیدا کردم، و خیلی عالی و کامل آقا poorman زحمتش رو کشیدن ;)
به بقیه دوستان هم پیشنهاد میکنم از این کتابخونه استفاده کنن.
بازم ممنون
یا علی
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
پروژه ORM ای که با اسم GreenDao توسعه داده شده هم بسیار عالیست
-
نقل قول: کار با دیتابیس آماده به آسانی با استفاده از لایبری sqlite asset helper
سلام ممنون از زحماتتون.دوتا سوال داشتم.
1.من دیتابیسمو با sqlite managerساختم.پسوندی که ایجاد میکنه در پایان .sqlite ولی شما گفتین باید .db باشه!ایا باید من خودم پسوندشو عوض کنم؟
2.داخل کلاس mydatabase نباید ستون های جدولمو تعریف کنم؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
اشکالی نداره دستی تغییر بدید به .db
نیازی به تعریف ستون ها در کلاس MyDatabase نیست، فقط کافیست طبق مراحل عمل کنید
-
1 ضمیمه
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام ببخشید من طبق مراحل پیش رفتم ولی بازم برنامم اجرانمیشه.پیغام های log cat رو براتون میذارم اگه لطف کنید راهنماییم کنید ممنون میشمضمیمه 125825
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
دوست عزیز عکسی که گذاشتید خیلی کوچیکه، من نتونستم متن خطا رو بخونم
مطمئن بشید که دیتابیس به درستی داخل پوشه assets/databases قرار گرفته با شکل نامگذاری data.db.zip ( حتما زیپ شده باشه )
توی کلاس MyDatabase اسم دیتابیس رو بدون پسوند zip بنویسید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
میخوام یه سرچ آنلاین یعنی سرچی تو textChenged یه edittext قرار بدم اما دستور sql که مینویسم براش خوب کار نمیکنه
select * from tbl where name like '%"+TXT+"%' group by name
نمیدونم چرا بخش group by name خوب جواب نمیده و name های تکراری رو میاره (تو tbl سطر های تکراری از name دارم برا همین از group استفاده میکنم)
مثلا اگه تو فیلد name داشته باشیم (پریا و محمد و...)
نمیدونم چرا وقتی پ رو مینویسم جای اینکه فقط یکبار تو لیست ویو پریا بیاد ٰ چندین بار نشون داده میشه و باید حرف دوم رو هم بزنم (یعنی پر) تا یک بار نشون بده تو لیست ویو
اما برا بعضی از name ها جواب میده و فقط یکبار تو لیست ویو با تایپ اولین حرف نشون داده میشه
نمیدونم قضیش چیه
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
مشکلی که میگید فکر میکنم بیشتر در رابطه با کاراکترهای عربی باشه ( ک ، ی )
احتمالا توی دیتابیس با کاراکترهای عربی ذخیره کردید و وقتی دارید جستجو انجام میدید با کاراکترهای فارسی جستجو میکنید
برای اینکه دقیقا از عملکرد کوئری تون مطمئن بشید با کاراکترهای انگلیسی امتحان کنید
-
1 ضمیمه
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام خیلی ببخشید که عکسم کوچیک بود.من طبق مراحلی که فرموده بودین دیتابیسم رو کپی کردم ولی نمیفهمم مشکلش از کجاست.سک عکس بزرگتر براتون میذارمضمیمه 125869
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
خطاتون داره میگه فایل دیتابیس MyDB.db رو نمیتونه توی assets پیدا کنه
به کوچیکی و بزرگی نام گذاری فایل ها و پوشه هاتون دقت داشته باشید حتما
احتمال داره اسم فایل دیتابیس داخل zip تفاوت داشته باشه با اسم فایل زیپ یا هر چیز دیگه ای، متن خطا جزئیات رو ننوشته دیگه
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
سلام
مشکلی که میگید فکر میکنم بیشتر در رابطه با کاراکترهای عربی باشه ( ک ، ی )
احتمالا توی دیتابیس با کاراکترهای عربی ذخیره کردید و وقتی دارید جستجو انجام میدید با کاراکترهای فارسی جستجو میکنید
برای اینکه دقیقا از عملکرد کوئری تون مطمئن بشید با کاراکترهای انگلیسی امتحان کنید
متوجه نمیشم ، یعنی چی با کاراکتر عربی ذخیره کردم و فارسی جستجو میکنم؟
خب پس باید چکار کنم؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
ببینید حروف "ک" و "ی" توی کیبورد عربی و فارسی دارای کدهای متفاوتی هستند
احتمال داره متن داخل دیتابیس شما کپی شده باشه و شامل کاراکترهای "ک" و "ی" عربی باشه
و شما وقتی دارید جستجو میکنید با کیبورد فارسی جستجو میکنید که نتیجه درستی نمیگیرید
گفتم که برای اینکه مطمئن بشید دستوراتتون درسته، متن داخل دیتابیس رو انگلیسی بذارید و براساس همون هم جستجو کنید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
ببینید حروف "ک" و "ی" توی کیبورد عربی و فارسی دارای کدهای متفاوتی هستند
احتمال داره متن داخل دیتابیس شما کپی شده باشه و شامل کاراکترهای "ک" و "ی" عربی باشه
و شما وقتی دارید جستجو میکنید با کیبورد فارسی جستجو میکنید که نتیجه درستی نمیگیرید
گفتم که برای اینکه مطمئن بشید دستوراتتون درسته، متن داخل دیتابیس رو انگلیسی بذارید و براساس همون هم جستجو کنید
متن داخل دیتابیس رو انگلیسی گذاشتم درست سرچ نکرد ، یعنی 3 تا سطر name رو مثلا meysam گذاشتم و یک سطر رو mohamad
اما وقتی تو ادیت تکست مینویسم m فقط meysam رو دو بار نشون میده (که باید یک بار بخاطر group by نشون بده) و mohamad رو هم نمیاره تا حرف دوم بزنم یعنی mo
یک هفته درگیرشم ! نمیدونم چرا انجام نمیشه این یه خط sql .
کل دستوراتی که براش نوشتم میزارم :(دو ستون مورد نظرم در دیتابیس name و matn هستش)
public String jostojoo(int row,int col,String word,String feild){
mydata=mydb.getReadableDatabase();
Cursor cu;
if(feild.equals("name")){
cu=mydata.rawQuery("select * from tbl where "+feild+" Like '%"+word+"%'group by name", null);
}else{
cu=mydata.rawQuery("select * from tbl where "+feild+" Like '%"+word+"%'", null);
}
cu.moveToPosition(row);
String save=cu.getString(col);
return save;
}
public Integer shomaresh_jostojoo(String word,String feild){
mydata=mydb.getReadableDatabase();
Cursor cu;
if(feild.equals("name")){
cu=mydata.rawQuery("select * from tbl where "+feild+" Like '%"+word+"%'group by name", null);
}else{
cu=mydata.rawQuery("select * from tbl where "+feild+" Like '%"+word+"%'", null);
}
int save=cu.getCount();
mydb.close();
return save;
}
private void refresher(String text1,String feild){
mydata=mydb.getReadableDatabase();
int save=shomaresh_jostojoo(text1, feild);
if(txt.getText().toString().equals("")){
save=0;
status.setText("لطفا متن مورد نظر خود را وارد نمایید");
}else{
status.setText("تعداد "+save+" مورد یافت شد");
}
NAME=new String[save];
FASL=new String[save];
page=new String[save];
cpage=new String[save];
for(int i=0;i<save;i++){
NAME[i]=jostojoo(i, 1, text1, feild);
FASL[i]=jostojoo(i, 5, text1, feild);
Cursor tedad=mydata.rawQuery("select * from tbl where name='"+NAME[i]+"'order by id", null);
cpage[i]=tedad.getCount()+"";
if (feild.equals("name")) {
page[i]="";
}else{
page[i]="-->"+jostojoo(i,3,text1, feild);
}
}
setListAdapter(new MyAdapterSearch(this, NAME, FASL,page));
mydb.close();
}
txt.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
if(rb_story_name.isChecked()){
refresher(txt.getText().toString(), "name");
}
else if(rb_matn.isChecked())
{
refresher(txt.getText().toString(), "matn");
}
}
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
عجیبه من خطایی توی کوئری هاتون نمیبینم
برای اینکه مطمئن بشید خطا از کوئری ها یا ساختار دیتابیس نیست، با نرم افزار SQLite Database Browser کوئری هاتون رو روی دیتابیس امتحان کنید
اگر درست جواب بگیرید معلوم میشه مشکلتون جای دیگه ست
راه دیگه ای به نظرم نرسید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
عجیبه من خطایی توی کوئری هاتون نمیبینم
منم از همینش در عجبم:گیج:
آداپتری رو که ازش استفاده میکنم به این صورت (ببینید ، به این که ربط نداره ؟ درسته؟)
package com.story.dastan;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MyAdapterSearch extends BaseAdapter {
Activity a;
String[] N;
String[] F;
String[]p;
private mydatabase mydata;
private SQLiteDatabase mydb;
public MyAdapterSearch (Activity act,String[] name,String[]fasl,String[]page){
a=act;
this.N=name;
this.F=fasl;
this.p=page;
this.mydata = new mydatabase(act.getApplicationContext());
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return N.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int pos, View convertView, ViewGroup arg2) {
View mylist;
LayoutInflater inflater = (LayoutInflater) a.getSystemService(Context.LAYOUT_INFLATER_SERVICE );
if (convertView == null) {
mylist = new View(a);
mylist = inflater.inflate(R.layout.row_listdastan, null);
TextView textView1 = (TextView) mylist.findViewById(R.id.row_listdastan_name);
TextView textView2 = (TextView) mylist.findViewById(R.id.row_listdastan_tedad);
textView1.setText("فصل :"+ F[pos]+": "+N[pos]+p[pos]);
textView2.setText("");
textView1.setTypeface(Main.font);
textView2.setTypeface(Main.font);
} else {
mylist = convertView;
}
return mylist;
}
}
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نه به آداپترتون ربطی نداره باید ببینید توابع خواندن از دیتابیس دقیقا چی برمیگردونه و چرا داره این اتفاق میفته