View Full Version : فرا خوانی از بانک اطلاعاتیsqlite
raha_jon
شنبه 29 شهریور 1393, 10:03 صبح
با سلام و ادب
فرض کنید یک مقداری داریم تو بانک اطلاعاتی به نام:new از نوع اینتیجر با دیفالت ولیوز 5 چطور می تونم کلیدی بنویسیم با این مقدار دیفالت ولیوز ها را در لیست ویو نمایش بده
public List<Bc> findNakhandeContacts() throws SQLException {
Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, KEY_MA
+ " == " + 0 + "", null, null, null, null, null);
List<Bc> nams = cursorToList(cursor);
return nams;
}
می خوام کلید مشابه به کلید بالا بسازم
لطفا راهنمایی کنید
abbasalim
شنبه 29 شهریور 1393, 10:12 صبح
سلام به شخصه متوجه نشدم؟ میخوای کوئری بزنید هرچی 5 هست نمایش بده؟ خوب بجای 0بزارید 5 ، میخواید که دستوری بنویسید که مقدار پیش فرض ستون خاصیش 5 باشه؟
saeed_g21
شنبه 29 شهریور 1393, 10:14 صبح
منظورتون رو نفهمیدیم میخواین فقط ردیف هایی که 5 هستند رو نشان بدید ؟
select * from table where new=5
raha_jon
شنبه 29 شهریور 1393, 11:23 صبح
تشکر
من یک فیلد اضافه کرده ام به نام
YAN از نوع انتیجر در بعضی ردیف ها مقدار این 0 هست در بعضی ردیف ها مقدار این 5 هست حالا می خوام شبیه به کلید بالا کلیدی بسازم که با بکار گیری ان بتونم مثلا با زدن باتونی 5 ها را از 0 ها جدا کنم
saeed_g21
شنبه 29 شهریور 1393, 11:35 صبح
تشکر
من یک فیلد اضافه کرده ام به نام
YAN از نوع انتیجر در بعضی ردیف ها مقدار این 0 هست در بعضی ردیف ها مقدار این 5 هست حالا می خوام شبیه به کلید بالا کلیدی بسازم که با بکار گیری ان بتونم مثلا با زدن باتونی 5 ها را از 0 ها جدا کنم
2روش به ذهنم رسید برای این کار
1) با زدن هر باتن Query جدیدی فراخوانی بشه
2) اگه با arrayAdapter استفاده میکنی میتونی با filter کردن و بدون فراخوانی Query این کار رو کنی
raha_jon
شنبه 29 شهریور 1393, 11:54 صبح
من اینو درس کردهم
public List<Bc> findNakhandeContacts() throws SQLException {
Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, KEY_MA
+ " == " + 0 + "", null, null, null, null, null);
List<Bc> nams = cursorToList(cursor);
return nams;
}
و با زدن با تون به کارش عمل میکنه حالا اینو چطور پیداه کنم؟
saeed_g21
شنبه 29 شهریور 1393, 13:04 عصر
بقول دوست عزیزمون abbasalim (http://barnamenevis.org/member.php?260884-abbasalim)
در onclick باتن 5 عدد 0 رو به 5 تغییر بده تا 5 فقط 5ها بیان خوب
نکنه منظور شما اینه که شما که یک فیلد جدید درست کردید چطوری اون فیلد رو در query بالا جاسازی کنید ؟
raha_jon
شنبه 29 شهریور 1393, 16:50 عصر
بله منظورم ما هم این بود
saeed_g21
شنبه 29 شهریور 1393, 23:45 عصر
من تاحالا با db.query کار نکردم با db.rawQuery کارکردم نسبت به این خیلی راحته
مثال :
db.rawQuery("select name from table where YAN=5", null);
raha_jon
یک شنبه 30 شهریور 1393, 07:35 صبح
اینو در رویداد باتون بزارم؟
raha_jon
یک شنبه 30 شهریور 1393, 07:44 صبح
با این کار کار نمی کنه و ارور میده و وقتی پاسخ میدی بهش این کدو در دی بی اداپتر میسازه
public void rawQuery(String string, Object object) {
// TODO Auto-generated method stub
}
saeed_g21
یک شنبه 30 شهریور 1393, 15:59 عصر
public List<Bc> findNakhandeContacts() throws SQLException { Cursor cursor = db.rawQuery("select name from table where YAN=5", null);
List<Bc> nams = cursorToList(cursor);
return nams;
}
raha_jon
یک شنبه 30 شهریور 1393, 16:26 عصر
تشکر با اینم فورس کلوز میده:گریه:
saeed_g21
یک شنبه 30 شهریور 1393, 16:27 عصر
تشکر با اینم فورس کلوز میده:گریه:
کل کد اکتیویتی رو بده همینطور Logcat
raha_jon
یک شنبه 30 شهریور 1393, 16:42 عصر
تشکر
btn_fav.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
raha= db.findNakhandeContacts();
isAll=false;
refreshDisplay();
}
});
اینم مشخصات اکتیویتی بالا
DBAdapter db;
List<Dastan> raha;
ListView lst;
Context c;
اینم در دی بی اداپتر
public List<Dastan> findFAVContacts() throws SQLException { Cursor cursor = db.rawQuery("select name from table where khande=5", null);
List<Dastan> nams = cursorToList(cursor);
return nams;
}
که کار نکرد اینم مثال که کار میکنه
public List<Dastan> findKhandeContacts() throws SQLException {
Cursor cursor = db.query(true, DATABASE_TABLE, yek_name, KEY_KHAND
+ " == " + 1 + "", null, null, null, null, null);
List<Dastan> nams = cursorToList(cursor);
return nams;
}
اینم تعریف اطلاعات در دی بی اداپتر
static final String CREATE_TABLE = "CREATE TABLE "
+ DATABASE_TABLE + " (" + KEY_ID
+ " INTEGER PRIMARY KEY NOT NULL , " + KEY_ONVAN + " TEXT, "
+ KEY_MATN + " TEXT, " + KEY_NEVIS + " TEXT, " + KEY_IMG
+ " TEXT, " + KEY_FAV + " INTEGER NOT NULL DEFAULT 0, "
+ KEY_KHAND + " INTEGER NOT NULL DEFAULT 0, " + KEY_EXTRA
+ " TEXT)";
// ye arraye vase hame gozine ha minevisim
String[] yek_name = new String[] { KEY_ID, KEY_ONVAN, KEY_MATN, KEY_NEVIS,
KEY_IMG, KEY_FAV, KEY_KHAND, KEY_EXTRA };
اینم لاگ
09-21 12:39:57.516: D/dalvikvm(1617): GC_CONCURRENT freed 3610K, 32% free 8231K/11988K, paused 3ms+4ms, total 20ms
09-21 12:39:57.672: W/EGL_emulation(1617): eglSurfaceAttrib not implemented
09-21 12:40:02.724: E/SQLiteLog(1617): (1) near "table": syntax error
09-21 12:40:02.728: D/AndroidRuntime(1617): Shutting down VM
09-21 12:40:02.728: W/dalvikvm(1617): threadid=1: thread exiting with uncaught exception (group=0xa6147908)
09-21 12:40:02.736: E/AndroidRuntime(1617): FATAL EXCEPTION: main
09-21 12:40:02.736: E/AndroidRuntime(1617): android.database.sqlite.SQLiteException: near "table": syntax error (code 1): , while compiling: select name from table where fav=1
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.database.sqlite.SQLiteConnection.nativePre pareStatement(Native Method)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.database.sqlite.SQLiteConnection.acquirePr eparedStatement(SQLiteConnection.java:882)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.database.sqlite.SQLiteConnection.prepare(S QLiteConnection.java:493)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.database.sqlite.SQLiteSession.prepare(SQLi teSession.java:588)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.database.sqlite.SQLiteDirectCursorDriver.q uery(SQLiteDirectCursorDriver.java:44)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.database.sqlite.SQLiteDatabase.rawQueryWit hFactory(SQLiteDatabase.java:1314)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.database.sqlite.SQLiteDatabase.rawQuery(SQ LiteDatabase.java:1253)
09-21 12:40:02.736: E/AndroidRuntime(1617): at ir.esfandune.database.DBAdapter.findNakhandeContac ts(DBAdapter.java:196)
09-21 12:40:02.736: E/AndroidRuntime(1617): at ir.esfandune.book.MainActivity$3.onClick(MainActiv ity.java:117)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.view.View.performClick(View.java:4204)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.view.View$PerformClick.run(View.java:17355 )
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.os.Handler.handleCallback(Handler.java:725 )
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.os.Handler.dispatchMessage(Handler.java:92 )
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.os.Looper.loop(Looper.java:137)
09-21 12:40:02.736: E/AndroidRuntime(1617): at android.app.ActivityThread.main(ActivityThread.jav a:5041)
09-21 12:40:02.736: E/AndroidRuntime(1617): at java.lang.reflect.Method.invokeNative(Native Method)
09-21 12:40:02.736: E/AndroidRuntime(1617): at java.lang.reflect.Method.invoke(Method.java:511)
09-21 12:40:02.736: E/AndroidRuntime(1617): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:793)
09-21 12:40:02.736: E/AndroidRuntime(1617): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:560)
09-21 12:40:02.736: E/AndroidRuntime(1617): at dalvik.system.NativeStart.main(Native Method)
saeed_g21
یک شنبه 30 شهریور 1393, 17:03 عصر
من در query ی که داده بودم رو مثال نوشته بودم شما هم همین رو کپی کردین به برنامه و اجراش کردین
1) در لاگ کت میگه تیبل "table" یافت نشد که حق هم داره شما باید نام تیبل خود رو بنویسید که در DATABASE_TABLE مقدار دهی شده
2) در Query بالا name نوشتم برا مثال بود شما باید فیلدی که میخواین نمایش بدین رو بنویسید مثال : id,name,khande,happy اگه نمیدونین درسته که صحیح نیست ولی میتونید * بزارید که همه فیلد های تیبل فراخوانی بشن
چک کن نتیجه رو بگو
raha_jon
دوشنبه 31 شهریور 1393, 11:50 صبح
تشکر
کافیه عداد را عوض کنیم
با همان کد خودمم هم کار میکنه
saeed_g21
دوشنبه 31 شهریور 1393, 11:53 صبح
خوب بالاتر گفته بودیم دیگه :لبخند:
raha_jon
دوشنبه 31 شهریور 1393, 12:27 عصر
پس دقیق نخونده بودم:گیج:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.