-
نقل قول: آموزش : کار با دیتابیس 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
نه به آداپترتون ربطی نداره باید ببینید توابع خواندن از دیتابیس دقیقا چی برمیگردونه و چرا داره این اتفاق میفته
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
من که دیگه موندم والا !!
دیتابیسش سادست و چیزی نداره ، اگه لطف کنید یه نگاهی بهش بندازید ممنون میشم
http://s5.picofile.com/file/81528465...ry_db.zip.html
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
من دیتابیستون رو دیدم، کوئری ها داره درست عمل میکنه
چیزی که الان به ذهنم رسید اینه که شرط هاتون توی توابع درست عمل نمیکنه و همیشه شرط else داره اجرا میشه
کلا نمیدونم چرا توی مقایسه دو رشته توی اندروید این مشکل پیش میاد، شرط field.equals("name") به احتمال زیاد اجرا نمیشه
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
من دیتابیستون رو دیدم، کوئری ها داره درست عمل میکنه
چیزی که الان به ذهنم رسید اینه که شرط هاتون توی توابع درست عمل نمیکنه و همیشه شرط else داره اجرا میشه
کلا نمیدونم چرا توی مقایسه دو رشته توی اندروید این مشکل پیش میاد، شرط field.equals("name") به احتمال زیاد اجرا نمیشه
نه ، اگه field.equals("name")
اجرا نمیشد که چیزی نشون نمیداد اصلا ، چون دوتا RadioButton دارم که یکی جستجو بر اساس name یکی جستجو بر اساس matn ، در field.equals("name")
هنگامی رخ میده که ستون name باشه ، چون اجرا میشه یه چیزایی تو لیست ویو میاد ولی group by هستش که فیلتر بر اساس name رو انجام نمیده و همه رو میاره !!
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
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;
}
[/QUOTE]
ببینید شما وقتی میخواین جستجو کنین این توابع رو فراخوانی میکنید دیگه درسته؟
حالا توی این توابع یک شرط دارید، اگر برقرار باشه group by میشه، اگر برقرار نباشه group by نمیشه
من میگم شرط شما برقرار نیست که این اتفاق میفته
به نظرم همیشه شرط else اتفاق میفته
میتونید با یک log کردن ساده بفهمید که تابع داره وارد کدوم شرط میشه
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
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;
}
ببینید شما وقتی میخواین جستجو کنین این توابع رو فراخوانی میکنید دیگه درسته؟
حالا توی این توابع یک شرط دارید، اگر برقرار باشه group by میشه، اگر برقرار نباشه group by نمیشه
من میگم شرط شما برقرار نیست که این اتفاق میفته
به نظرم همیشه شرط else اتفاق میفته
میتونید با یک log کردن ساده بفهمید که تابع داره وارد کدوم شرط میشه[/QUOTE]
دو تا RadioButton دارم که نوع جستجو رو انتخاب میکنم
دستور جستجو رو شرطش رو اینجوری هم مینویسم بازم تغییری نمیکنه و همونجوری میشه
public String jostojoo(int row,int col,String word,String feild){
mydata=mydb.getReadableDatabase();
Cursor cu;
String save;
//if(feild.equals("name")){
if( rb_story_name.isChecked()){
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);
save=cu.getString(col);
return save;
}
نقل قول:
حالا توی این توابع یک شرط دارید، اگر برقرار باشه group by میشه، اگر برقرار نباشه group by نمیشه
من میگم شرط شما برقرار نیست که این اتفاق میفته
یعنی if(feild.equals("name"))
انجام نمیشه ؟؟؟
خب تو دستورات زیر که تو پست های قبل هم نوشته بودم :
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();
}
شرط
if (feild.equals("name")) {
page[i]="";
}else{
page[i]="-->"+jostojoo(i,3,text1, feild);
}
اجرا میشه که تو لیست ویوم وقتی بر اساس name هستش شماره صفحه خالی میزاره
:عصبانی++::عصبانی++::عصبانی++:: صبانی++::عصبانی++::عصبانی++:
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
- فایل Jar را متاسفانه نتوانست دانلود کنم اگر امکانش هست بصورت فشرده در جایی دیگر قرار دهید.
- کلاس Mydatabase در کجا باید ایجاد شود؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
10 تا record در دیتابیس دارم.
در برنامه یه دکمه قرار دادم که هر بار با زدن دکمه record بعدی نمایش داده میشه
وقتی به record دهم میرسه با زدن دکمه برنامه کرش میشه چون record ها به پایان رسیده است
Index 10 requested, with a size of 10
سوال اینه که چطور مینم از این کرش شدن برنامه جلوگیری کنم ؟ (مثلا یه پیام نشون بدم که دیتابیس تمام شده)
با تشکر و احترام
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
سلام
10 تا record در دیتابیس دارم.
در برنامه یه دکمه قرار دادم که هر بار با زدن دکمه record بعدی نمایش داده میشه
وقتی به record دهم میرسه با زدن دکمه برنامه کرش میشه چون record ها به پایان رسیده است
Index 10 requested, with a size of 10
سوال اینه که چطور مینم از این کرش شدن برنامه جلوگیری کنم ؟ (مثلا یه پیام نشون بدم که دیتابیس تمام شده)
با تشکر و احترام
سلام
اول از همه با اجازه از اساتید و دوستان
ساده ترین راه ممکن به نظر من این که با استفاده از try ...catch ارور به به دام بندازید و با در قسمت Catch از کویری
SELECT * FROM TableName order by column DESC LIMIT 1
برای رفتن به اخرین رکودر ذخیره شده استفاده کن.
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
hamedjj
سلام
10 تا record در دیتابیس دارم.
در برنامه یه دکمه قرار دادم که هر بار با زدن دکمه record بعدی نمایش داده میشه
وقتی به record دهم میرسه با زدن دکمه برنامه کرش میشه چون record ها به پایان رسیده است
Index 10 requested, with a size of 10
سوال اینه که چطور مینم از این کرش شدن برنامه جلوگیری کنم ؟ (مثلا یه پیام نشون بدم که دیتابیس تمام شده)
با تشکر و احترام
سلام حامد جان
اگر فقط بخوای خطا نگیری کاری که دوست عزیزمون commander گفت مناسب هست
اما اگر بخوای شرایط رو کنترل کنی
به نظر من بهتره اول تعداد سطرهای داخل دیتابیس رو بگیری و یه جا ذخیره کنی
با کوئری زیر میشه تعداد رو گرفت
Cursor c = mydb.rawQuery("select count(*) from table", null);
مهم همون count(*) هست که تعداد رو برمیگردونه
بعدش دیگه دست خودته چطوری ازش استفاده کنی
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
weblox
سلام
- فایل Jar را متاسفانه نتوانست دانلود کنم اگر امکانش هست بصورت فشرده در جایی دیگر قرار دهید.
- کلاس Mydatabase در کجا باید ایجاد شود؟
سلام
فایل دوباره آپلود شد
کلاس MyDatabase رو همونجایی که بقیه اکتیویتی هاتون هستن بسازید به عنوان یک کلاس جدا
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام من یه دیتابیس دارم برای پروژه کتاب هست . پروژه رو از اینترنت دانلود کردم . حالا میخوام این دیتابیس کلا چه بخش جستجو و علاقه مندی و نمایش رکورد ها محدود به 10 عدد بشه . میشه برام تغییرش بدید بلد نیستم:ناراحت:
package com.example.book;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class database extends SQLiteOpenHelper {
public final String path="data/data/com.example.book/databases/";
public final String Name="database";
public SQLiteDatabase mydb;
private final Context mycontext;
public database(Context context) {
super(context, "database", null, 1);
mycontext=context;
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
public void useable(){
boolean checkdb=checkdb();
if(checkdb){
}else{
this.getReadableDatabase();
try{
copydatabase();
}catch(IOException e){
}
}
}
public void open(){
mydb=SQLiteDatabase.openDatabase(path+Name, null, SQLiteDatabase.OPEN_READWRITE);
}
public void close(){
mydb.close();
}
public boolean checkdb(){
SQLiteDatabase db=null;
try{
db=SQLiteDatabase.openDatabase(path+Name, null, SQLiteDatabase.OPEN_READONLY);
}
catch(SQLException e)
{
}
//mydb.close();
return db !=null ? true:false ;
}
public void copydatabase() throws IOException{
OutputStream myOutput = new FileOutputStream(path+Name);
byte[] buffer = new byte[1024];
int length;
InputStream myInput = mycontext.getAssets().open(Name);
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myInput.close();
myOutput.flush();
myOutput.close();
}
public String Display(int row,int field,String table){
int limit = 10;
Cursor cu=mydb.rawQuery("select * from "+table, null);
cu.moveToPosition(row);
String s=cu.getString(field);
return s;
}
public Integer count(String table,String field){
Cursor cu=mydb.rawQuery("select * from "+table+" group by "+field, null);
int s=cu.getCount();
return s;
}
public String Season_display(String table,int row){
Cursor cu=mydb.rawQuery("select * from "+table+" group by Seasone", null);
cu.moveToPosition(row);
String s=cu.getString(4);
return s;
}
public Integer Story_count(String table,String sea){
Cursor cu=mydb.rawQuery("select * from "+table+" where Seasone='"+sea+"' group by Name", null);
int s=cu.getCount();
return s;
}
public String Story_display(String table,int row,String sea, int field){
Cursor cu=mydb.rawQuery("select * from "+table+" where Seasone='"+sea+"' group by Name", null);
cu.moveToPosition(row);
String s=cu.getString(field);
return s;
}
public Integer Story_page_count(String table,String sea,String story){
Cursor cu=mydb.rawQuery("select * from "+table+" where Seasone='"+sea+"' and Name='"+story+"'", null);
int s=cu.getCount();
return s;
}
public String main_display(String table,String sea,String name,String page){
Cursor cu=mydb.rawQuery("select * from "+table+" where Seasone='"+sea+"' and Name='"+name+"' and Page="+page, null);
cu.moveToFirst();
String s=cu.getString(2);
return s;
}
public void fav_update(String table,String sea, String name,String v){
ContentValues cv=new ContentValues();
cv.put("Fav", v);
mydb.update(table, cv, "Seasone='"+sea+"' and Name='"+name+"'", null);
}
public Integer fav_count(String table){
Cursor cu=mydb.rawQuery("select * from "+table+" where Fav=1 group by Name", null);
int s=cu.getCount();
return s;
}
public String fav_display(String table,int row,int field){
Cursor cu=mydb.rawQuery("select * from "+table+" where Fav=1 group by Name", null);
cu.moveToPosition(row);
String s=cu.getString(field);
return s;
}
public Integer count_serach(String word,String field){
Cursor cu;
if(field.equals("Name")){
cu=mydb.rawQuery("select * from content where "+field+" Like '%"+word+"%' group by Name", null);
}else{
cu=mydb.rawQuery("select * from content where "+field+" Like '%"+word+"%'", null);
}
int s=cu.getCount();
return s;
}
public String serach(int row,int col,String word,String field){
Cursor cu;
if(field.equals("Name")){
cu=mydb.rawQuery("select * from content where "+field+" Like '%"+word+"%' group by Name", null);
}else{
cu=mydb.rawQuery("select * from content where "+field+" Like '%"+word+"%'", null);
}
cu.moveToPosition(row);
String s=cu.getString(col);
return s;
}
public Integer all_story_count(String table){
Cursor cu=mydb.rawQuery("select * from "+table+" group by Name", null);
int s=cu.getCount();
return s;
}
public String all_story_display(String table,int row,int field){
Cursor cu=mydb.rawQuery("select * from "+table+" group by Name order by ID", null);
cu.moveToPosition(row);
String s=cu.getString(field);
return s;
}
}
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
ehsanh22
سلام من یه دیتابیس دارم برای پروژه کتاب هست . پروژه رو از اینترنت دانلود کردم . حالا میخوام این دیتابیس کلا چه بخش جستجو و علاقه مندی و نمایش رکورد ها محدود به 10 عدد بشه . میشه برام تغییرش بدید بلد نیستم:ناراحت:
سلام
کدهایی که گذاشتید مال کل کلاس دیتابیس هست، برای کاری که میخواید بکنید باید ساختار پروژه کامل مشخص بشه
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
poorman
سلام
کدهایی که گذاشتید مال کل کلاس دیتابیس هست، برای کاری که میخواید بکنید باید ساختار پروژه کامل مشخص بشه
سلام لینک پروژه رو براتون فرستادم ممنون
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
می بخشید یه سوال خیلی آماتوری :
مشکل چی هست در این کد؟
http://upload7.ir/imgs/2014-12/90349923479741471659.gif
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
سلام
شما متغیر mydb رو قبلش تعریف نکردید دوست عزیز
SQLiteDatabase mydb;
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
چرا نرم افزار DB Browser for SQLite خروجی دیتابیس را .sql میده نه .db ؟
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
نقل قول:
نوشته شده توسط
weblox
چرا نرم افزار DB Browser for SQLite خروجی دیتابیس را .sql میده نه .db ؟
فرمت فایل مهم نیست میتوانید بصورت دستی به .db یا .mp3 و ... تغییر دهید
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
مشکل این کد چی هست که برنامه با ارور اجرا میشه؟
یک مقدار را می خوام از یک فیلد جدول بگیرم و در textview بریزم.
http://upload7.ir/imgs/2014-12/83409522783585105688.gif
-
نقل قول: آموزش : کار با دیتابیس SQLite به زبان ساده بدون نیاز به کلاس DataBaseHelper
'(' رو از انتهای Query بردار حل میشه
اشتباه درج شده خطامیده