PDA

View Full Version : بهم ریختن فیلدهای دیتابیس در جدول_عجیب



nargesjooon
چهارشنبه 09 دی 1394, 11:58 صبح
سلام دوستان
کلا حالا ک موضوع دیتابیس را متوجه شدم البتهبا 1 جدول
حالا 4 تا جدول دارم میخام با کلیک روی باتن های 1 تا 4 فیلدهای جدول 1 تا 4 ب نمایش دربیایند
اما
به این صورت نمایش داده میشن
اینم تصاویر و کدهای نوشته شده
ممنون میشم کمکم کنید

http://8pic.ir/images/qzx7530suoj2jjmtrml3.jpg

http://8pic.ir/images/fshb9ipngep5w3pm80bx.jpg


کد دیتابیس و کوئری های مربوطه


public String namayesh_field(String table , int row){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by season", null);
Cursor.moveToPosition(row);
String s = Cursor.getString(4);
return s;
}



public Integer shomaresh_field1(String table , String field){
Cursor Cursor=mydb.rawQuery("SELECT * FROM "+table+" group by "+field, null);


int i=Cursor.getCount();
return i ;


}
public String namayesh_field1(String table , int row){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by season", null);
Cursor.moveToPosition(row);
String s = Cursor.getString(4);
return s;
}

public Integer shomaresh_dastan(String table , String seasone){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" where season='"+seasone+"' group by name", null);
int s = Cursor.getCount();
return s;

}

public Integer shomaresh_dastan1(String table , String seasone){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" where season='"+seasone+"' group by name", null);
int s = Cursor.getCount();
return s;

}

public String namayesh_dastan (String table , int row , String season ){
Cursor Cursor = mydb.rawQuery("select * from " +table,null);
Cursor.moveToPosition(row);
String save = Cursor.getString(1);
return save;

}


public Integer shomaresh_safhe_dastan (String table , String season , String story){
Cursor Cursor = mydb.rawQuery("select * from "+table+" where season='"+season+"' and name='"+story+"'",null);
int save = Cursor.getCount();
return save;
}
}




کد مربوط ب نمایش فصل ها


public class Season extends ListActivity {

private MyDatabase db;
private String [] Name;
private String [] Teadad;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.season);


db = new MyDatabase(this);



refresher();
setListAdapter(new AA());
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Intent intent = new Intent(Season.this, Story.class);
intent.putExtra("season", Name[position]);
startActivity(intent);

}

class AA extends ArrayAdapter<String>{

public AA(){
super (Season.this , R.layout.raw_season , Name);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater in = getLayoutInflater();
View row = in.inflate(R.layout.raw_season, parent,false);

TextView name = (TextView) row.findViewById(R.id.txt_season);
TextView teadad = (TextView) row.findViewById(R.id.txt_number_season);
name.setText(Name [position]);
teadad.setText(Teadad [position]);
return (row);


}
}

private void refresher (){

db.open();

int save = db .shomaresh_field("tb1", "season");
Name = new String[save];
Teadad = new String[save];

for (int i = 0; i < save; i++) {
Name[i] = db.namayesh_field("tb1", i);
Teadad[i]=db.shomaresh_dastan("tb1", Name[i].toString())+"";

}

int save1 = db .shomaresh_field1("tb2", "season");
Name = new String[save1];
Teadad = new String[save1];

for (int i = 0; i < save1; i++) {
Name[i] = db.namayesh_field1("tb2", i);
Teadad[i]=db.shomaresh_dastan1("tb2", Name[i].toString())+"";

}

db.close();

}




}

nargesjooon
چهارشنبه 09 دی 1394, 16:53 عصر
این همه بازدید
اما دریغ از ی راهنمایی :ناراحت:

MansoorJ
پنج شنبه 10 دی 1394, 10:15 صبح
سلام.
میشه سوالتون رو واضح تر بگید.

nargesjooon
پنج شنبه 10 دی 1394, 13:06 عصر
سلام.
میشه سوالتون رو واضح تر بگید.
بنده ی دیتابیس دارم دارای 4 جدول
میخاهم وقتی روی دکمه 1 کلیک کنم اطلاعات جدول اول رو ببینم
وقتی روی دکمه 2 کلیک کنم اطلاعات جدول 2 را در لیست ویو ببینم
اما
وقتی روی دکمه 1 کلیک میکنم فیلد های جدول 1 را بهم ریخته ب من نمایش میده
و همینطور برای دیگر دکمه ها
به این صورت
فصل اول
فصل دوم
فصل سوم
فصل ششم
فصل پنجم
فصل چهارم

MansoorJ
پنج شنبه 10 دی 1394, 13:44 عصر
شما در هنگام ذخیره سازی یک فیلد عددی هم قرار بدید مثلا برای فصل اول عدد 1 و فصل دوم عدد 2 و......ذخیره شود.

سپس موقع فرخوانی از دیتابیس با استفاده از Order by اطلاعات رو واکشی کنید.(order by بر اساس فیلدهای عددی.)

nargesjooon
پنج شنبه 10 دی 1394, 13:48 عصر
شما در هنگام ذخیره سازی یک فیلد عددی هم قرار بدید مثلا برای فصل اول عدد 1 و فصل دوم عدد 2 و......ذخیره شود.

سپس موقع فرخوانی از دیتابیس با استفاده از Order by اطلاعات رو واکشی کنید.(order by بر اساس فیلدهای عددی.)

میشه با کد مثال بزنید ک واضح تر متوجه بشم؟:متفکر:

MansoorJ
پنج شنبه 10 دی 1394, 13:55 عصر
زمانی که تیبل فصل ها رو ساختید احتمالا به این شکل هست
Id,SeasonName
که مثلا شامل اطلاعات زیره
Id:1
SeasonName فصل 1
و.....

خب شما یا باید اطلاعات را داخل دیتابیس فصل ها بترتیب وارد کنید که موقع واکشی order by بزنید بر اساس Id
یا اینکه اگر بصورت پراکنده وارد کردید باید یک فیلد دیگه به جدول اضافه کنید که عدد فصل رو وارد کرده باشید مثلا برای فصل 1 عدد 1 داخلش باشه و بر اون اساس order by بزنید.

کد هم به این شکل هست.


Cursor Cursor=mydb.rawQuery("SELECT * FROM season order by Id", null);

nargesjooon
پنج شنبه 10 دی 1394, 14:09 عصر
زمانی که تیبل فصل ها رو ساختید احتمالا به این شکل هست
Id,SeasonName
که مثلا شامل اطلاعات زیره
Id:1
SeasonName فصل 1
و.....

خب شما یا باید اطلاعات را داخل دیتابیس فصل ها بترتیب وارد کنید که موقع واکشی order by بزنید بر اساس Id
یا اینکه اگر بصورت پراکنده وارد کردید باید یک فیلد دیگه به جدول اضافه کنید که عدد فصل رو وارد کرده باشید مثلا برای فصل 1 عدد 1 داخلش باشه و بر اون اساس order by بزنید.

کد هم به این شکل هست.


Cursor Cursor=mydb.rawQuery("SELECT * FROM season order by Id", null);

من انجام دادم اما جواب نگرفتم

اینم عکس دیتابیسم
http://8pic.ir/images/t25bh2odjg53y6yw47nf.jpg

MansoorJ
پنج شنبه 10 دی 1394, 14:14 عصر
خب اگر اطلاعاتتون بصورت پشت سرم هم ثبت شده(منظورم داستان ها و فصل ها هست)
order by بزنید بر اساس ID یعنی فیلد آی دی جدول اصلی ....

nargesjooon
پنج شنبه 10 دی 1394, 14:26 عصر
خب اگر اطلاعاتتون بصورت پشت سرم هم ثبت شده(منظورم داستان ها و فصل ها هست)
order by بزنید بر اساس ID یعنی فیلد آی دی جدول اصلی ....
انجام میدم اما باز هم طبق معمول درست نشد :افسرده:

nargesjooon
پنج شنبه 10 دی 1394, 14:30 عصر
انجام میدم اما باز هم طبق معمول درست نشد :افسرده:
آخه جدول هایی ک فصل هاش از 4 فصل بیشتر هستش به صورت بهم ریخته نمایش میده
اما جدولی ک تعداد فصل هاش تا 4 فصل باشه مرتب نمایش میده

MansoorJ
پنج شنبه 10 دی 1394, 14:35 عصر
به نظرم به جدولتون یک ستون دیگه اضافه کنید به اسم season_id و مقدار اون رو دقیقا برای هر فصل شماره اون فصل قرار بدیدو بعدش order by رو بر اساس اون بذارید
مطمئنا درست میشه.

nargesjooon
پنج شنبه 10 دی 1394, 14:49 عصر
به نظرم به جدولتون یک ستون دیگه اضافه کنید به اسم season_id و مقدار اون رو دقیقا برای هر فصل شماره اون فصل قرار بدیدو بعدش order by رو بر اساس اون بذارید
مطمئنا درست میشه.
حقیقتش متوجه منظورتون نشدم

MansoorJ
پنج شنبه 10 دی 1394, 15:05 عصر
منظورم این هست.
138068

nargesjooon
پنج شنبه 10 دی 1394, 15:20 عصر
منظورم این هست.
138068
اون فیلد را اضافه کردم
اما الان ب ورژن کد دیتابیس گیر میده
ورژن شو 2 میزارم گیر میده
ورژن شو 1 میزارم ب اون ستونی ک ساختم گیر میده میگ نمیشناسمش :افسرده:

nargesjooon
پنج شنبه 10 دی 1394, 15:25 عصر
اون فیلد را اضافه کردم
اما الان ب ورژن کد دیتابیس گیر میده
ورژن شو 2 میزارم گیر میده
ورژن شو 1 میزارم ب اون ستونی ک ساختم گیر میده میگ نمیشناسمش :افسرده:

خطای دیتابیس درست شد
اما
نتیجه اینطوری شد

http://8pic.ir/images/jpodcr59bq266yuvx3vb.jpg

nargesjooon
پنج شنبه 10 دی 1394, 15:30 عصر
منظورم این هست.
138068

اینم کدش

public String namayesh_field(String table , int row){
Cursor Cursor=mydb.rawQuery("SELECT * FROM "+table+" Order By season_id ", null);
//Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by id", null);
Cursor.moveToPosition(row);
String s = Cursor.getString(4);
return s;
}

MansoorJ
پنج شنبه 10 دی 1394, 15:54 عصر
اینم کدش

public String namayesh_field(String table , int row){
Cursor Cursor=mydb.rawQuery("SELECT * FROM "+table+" Order By season_id ", null);
//Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by id", null);
Cursor.moveToPosition(row);
String s = Cursor.getString(4);
return s;
}



قبل از order by باید group by انجام بدید.

nargesjooon
پنج شنبه 10 دی 1394, 19:42 عصر
قبل از order by باید group by انجام بدید.

یعنی این دوتا ها را تو یه دستور قرار بدم؟؟
چجوری؟

MansoorJ
پنج شنبه 10 دی 1394, 21:23 عصر
یعنی این دوتا ها را تو یه دستور قرار بدم؟؟
چجوری؟

به این شکل.


Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by season_id Order By season_id", null);

nargesjooon
پنج شنبه 10 دی 1394, 22:08 عصر
به این شکل.


Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by season_id Order By season_id", null);

:تشویق:
ممنوووووووووووووووووووووو ون دوست گرامی
جواب داد بعد از 2 هفته تونسم با کمکت حل کنم:قلب:

nargesjooon
جمعه 11 دی 1394, 17:33 عصر
به این شکل.


Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by season_id Order By season_id", null);

کلا بحث جداول دیتابیس ک پیش میاد کار مشکل میشه
مثلا الان 4 جدول دارم هرکاری کردم ک بخام این 4 جدول را در یک کلاس قرار بدم نشد
برا همین خاطر 4 کلاس براشون درست کردم