PDA

View Full Version : دیتا بیس sqlite



ehsan2313
چهارشنبه 27 شهریور 1398, 17:24 عصر
سلام دوستان . دارم اپ کتاب اندروید استودیو درست میکنم ظاهرا همه قسمت های دیتا بیس و خود اپ به هم متصلن مشکلی ندارن .
دیتا بیس هم db browser for sqlite تعداد فیلد ها و اسمشون هم یکیه اما ارور دارم .برنامه رو که باز میکنم خارج میشه ارور توی لوگ کت
I/HwPointEventFilter: do not support AFT because of no config
E/SQLiteLog: (1)
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ehsan.bookthink, PID: 5450
android.database.sqlite.SQLiteException: no such table: person (Sqlite code 1): , while compiling: SELECT * FROM person WHERE category = 'irani', (OS error - 2:No such file or directory)
at android.database.sqlite.SQLiteConnection.nativePre pareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePr eparedStatement(SQLiteConnection.java:910)
at android.database.sqlite.SQLiteConnection.prepare(S QLiteConnection.java:521)
at android.database.sqlite.SQLiteSession.prepare(SQLi teSession.java:603)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:63)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.q uery(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWit hFactory(SQLiteDatabase.java:1397)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQ LiteDatabase.java:1331)
at com.ehsan.bookthink.DataBase.DataBase.getiranPerso n(DataBase.java:86)
at com.ehsan.bookthink.IranFragment.setupViews(IranFr agment.java:50)
at com.ehsan.bookthink.IranFragment.onCreateView(Iran Fragment.java:33)
at androidx.fragment.app.Fragment.performCreateView(F ragment.java:2600)
at androidx.fragment.app.FragmentManagerImpl.moveToSt ate(FragmentManagerImpl.java:881)
at androidx.fragment.app.FragmentManagerImpl.moveFrag mentToExpectedState(FragmentManagerImpl.java:1238)
at androidx.fragment.app.FragmentManagerImpl.moveToSt ate(FragmentManagerImpl.java:1303)
at androidx.fragment.app.BackStackRecord.executeOps(B ackStackRecord.java:439)
at androidx.fragment.app.FragmentManagerImpl.executeO ps(FragmentManagerImpl.java:2079)
at androidx.fragment.app.FragmentManagerImpl.executeO psTogether(FragmentManagerImpl.java:1869)
at androidx.fragment.app.FragmentManagerImpl.removeRe dundantOperationsAndExecute(FragmentManagerImpl.ja va:1824)
at androidx.fragment.app.FragmentManagerImpl.execSing leAction(FragmentManagerImpl.java:1696)
at androidx.fragment.app.BackStackRecord.commitNowAll owingStateLoss(BackStackRecord.java:299)
at androidx.fragment.app.FragmentPagerAdapter.finishU pdate(FragmentPagerAdapter.java:235)
at com.duolingo.open.rtlviewpager.DelegatingPagerAdap ter.finishUpdate(DelegatingPagerAdapter.java:60)
at androidx.viewpager.widget.ViewPager.populate(ViewP ager.java:1244)
at androidx.viewpager.widget.ViewPager.populate(ViewP ager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(View Pager.java:1622)
at com.duolingo.open.rtlviewpager.RtlViewPager.onMeas ure(RtlViewPager.java:211)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.LinearLayout.measureChildBeforeLayo ut(LinearLayout.java:1485)
at android.widget.LinearLayout.measureVertical(Linear Layout.java:775)
at android.widget.LinearLayout.onMeasure(LinearLayout .java:657)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.FrameLayout.onMeasure(FrameLayout.j ava:185)
at android.view.View.measure(View.java:19931)
at android.widget.RelativeLayout.measureChildHorizont al(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLa yout.java:461)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.FrameLayout.onMeasure(FrameLayout.j ava:185)
at androidx.appcompat.widget.ContentFrameLayout.onMea sure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.LinearLayout.measureChildBeforeLayo ut(LinearLayout.java:1485)
at android.widget.LinearLayout.measureVertical(Linear Layout.java:775)
at android.widget.LinearLayout.onMeasure(LinearLayout .java:657)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.FrameLayout.onMeasure(FrameLayout.j ava:185)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.LinearLayout.measureChildBeforeLayo ut(LinearLayout.java:1485)
at android.widget.LinearLayout.measureVertical(Linear Layout.java:775)
at android.widget.LinearLayout.onMeasure(LinearLayout .java:657)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.FrameLayout.onMeasure(FrameLayout.j ava:185)
at com.android.internal.policy.DecorView.onMeasure(De corView.java:729)
at android.view.View.measure(View.java:19931)
at android.view.ViewRootImpl.performMeasure(ViewRootI mpl.java:2442)
at android.view.ViewRootImpl.measureHierarchy(ViewRoo tImpl.java:1488)
at android.view.ViewRootImpl.performTraversals(ViewRo otImpl.java:1747)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl .java:1372)
at android.view.ViewRootImpl$TraversalRunnable.run(Vi ewRootImpl.java:6774)
at android.view.Choreographer$CallbackRecord.run(Chor eographer.java:926)
at android.view.Choreographer.doCallbacks(Choreograph er.java:735)
at android.view.Choreographer.doFrame(Choreographer.j ava:667)
at android.view.Choreographer$FrameDisplayEventReceiv er.run(Choreographer.java:912)
at android.os.Handler.handleCallback(Handler.java:761 )
at android.os.Handler.dispatchMessage(Handler.java:98 )
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.jav a:6517)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:832)
I/Process: Sending signal. PID: 5450 SIG: 9
Process 5450 terminated.
همچین چیزی میگه اگر کسی بتونه راهنماییم کنه واقعا ممنون میشم چون خودم تازه کارم و بدجور توی این ارور گیر کردم .

farhad_shiri_ex
چهارشنبه 27 شهریور 1398, 18:22 عصر
سلام دوستان . دارم اپ کتاب اندروید استودیو درست میکنم ظاهرا همه قسمت های دیتا بیس و خود اپ به هم متصلن مشکلی ندارن .
دیتا بیس هم db browser for sqlite تعداد فیلد ها و اسمشون هم یکیه اما ارور دارم .برنامه رو که باز میکنم خارج میشه ارور توی لوگ کت
I/HwPointEventFilter: do not support AFT because of no config
E/SQLiteLog: (1)
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ehsan.bookthink, PID: 5450
android.database.sqlite.SQLiteException: no such table: person (Sqlite code 1): , while compiling: SELECT * FROM person WHERE category = 'irani', (OS error - 2:No such file or directory)
at android.database.sqlite.SQLiteConnection.nativePre pareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePr eparedStatement(SQLiteConnection.java:910)
at android.database.sqlite.SQLiteConnection.prepare(S QLiteConnection.java:521)
at android.database.sqlite.SQLiteSession.prepare(SQLi teSession.java:603)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:63)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.q uery(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWit hFactory(SQLiteDatabase.java:1397)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQ LiteDatabase.java:1331)
at com.ehsan.bookthink.DataBase.DataBase.getiranPerso n(DataBase.java:86)
at com.ehsan.bookthink.IranFragment.setupViews(IranFr agment.java:50)
at com.ehsan.bookthink.IranFragment.onCreateView(Iran Fragment.java:33)
at androidx.fragment.app.Fragment.performCreateView(F ragment.java:2600)
at androidx.fragment.app.FragmentManagerImpl.moveToSt ate(FragmentManagerImpl.java:881)
at androidx.fragment.app.FragmentManagerImpl.moveFrag mentToExpectedState(FragmentManagerImpl.java:1238)
at androidx.fragment.app.FragmentManagerImpl.moveToSt ate(FragmentManagerImpl.java:1303)
at androidx.fragment.app.BackStackRecord.executeOps(B ackStackRecord.java:439)
at androidx.fragment.app.FragmentManagerImpl.executeO ps(FragmentManagerImpl.java:2079)
at androidx.fragment.app.FragmentManagerImpl.executeO psTogether(FragmentManagerImpl.java:1869)
at androidx.fragment.app.FragmentManagerImpl.removeRe dundantOperationsAndExecute(FragmentManagerImpl.ja va:1824)
at androidx.fragment.app.FragmentManagerImpl.execSing leAction(FragmentManagerImpl.java:1696)
at androidx.fragment.app.BackStackRecord.commitNowAll owingStateLoss(BackStackRecord.java:299)
at androidx.fragment.app.FragmentPagerAdapter.finishU pdate(FragmentPagerAdapter.java:235)
at com.duolingo.open.rtlviewpager.DelegatingPagerAdap ter.finishUpdate(DelegatingPagerAdapter.java:60)
at androidx.viewpager.widget.ViewPager.populate(ViewP ager.java:1244)
at androidx.viewpager.widget.ViewPager.populate(ViewP ager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(View Pager.java:1622)
at com.duolingo.open.rtlviewpager.RtlViewPager.onMeas ure(RtlViewPager.java:211)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.LinearLayout.measureChildBeforeLayo ut(LinearLayout.java:1485)
at android.widget.LinearLayout.measureVertical(Linear Layout.java:775)
at android.widget.LinearLayout.onMeasure(LinearLayout .java:657)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.FrameLayout.onMeasure(FrameLayout.j ava:185)
at android.view.View.measure(View.java:19931)
at android.widget.RelativeLayout.measureChildHorizont al(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLa yout.java:461)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.FrameLayout.onMeasure(FrameLayout.j ava:185)
at androidx.appcompat.widget.ContentFrameLayout.onMea sure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.LinearLayout.measureChildBeforeLayo ut(LinearLayout.java:1485)
at android.widget.LinearLayout.measureVertical(Linear Layout.java:775)
at android.widget.LinearLayout.onMeasure(LinearLayout .java:657)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.FrameLayout.onMeasure(FrameLayout.j ava:185)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.LinearLayout.measureChildBeforeLayo ut(LinearLayout.java:1485)
at android.widget.LinearLayout.measureVertical(Linear Layout.java:775)
at android.widget.LinearLayout.onMeasure(LinearLayout .java:657)
at android.view.View.measure(View.java:19931)
at android.view.ViewGroup.measureChildWithMargins(Vie wGroup.java:6139)
at android.widget.FrameLayout.onMeasure(FrameLayout.j ava:185)
at com.android.internal.policy.DecorView.onMeasure(De corView.java:729)
at android.view.View.measure(View.java:19931)
at android.view.ViewRootImpl.performMeasure(ViewRootI mpl.java:2442)
at android.view.ViewRootImpl.measureHierarchy(ViewRoo tImpl.java:1488)
at android.view.ViewRootImpl.performTraversals(ViewRo otImpl.java:1747)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl .java:1372)
at android.view.ViewRootImpl$TraversalRunnable.run(Vi ewRootImpl.java:6774)
at android.view.Choreographer$CallbackRecord.run(Chor eographer.java:926)
at android.view.Choreographer.doCallbacks(Choreograph er.java:735)
at android.view.Choreographer.doFrame(Choreographer.j ava:667)
at android.view.Choreographer$FrameDisplayEventReceiv er.run(Choreographer.java:912)
at android.os.Handler.handleCallback(Handler.java:761 )
at android.os.Handler.dispatchMessage(Handler.java:98 )
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.jav a:6517)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:832)
I/Process: Sending signal. PID: 5450 SIG: 9
Process 5450 terminated.
همچین چیزی میگه اگر کسی بتونه راهنماییم کنه واقعا ممنون میشم چون خودم تازه کارم و بدجور توی این ارور گیر کردم .

این خطا به صراحت داره میگه که table person وجود نداره!
یا نام جدول اشتباه میزنید ویا واقعا این جدول در دیتابیس تون وجود نداره!

ehsan2313
چهارشنبه 27 شهریور 1398, 22:10 عصر
این خطا به صراحت داره میگه که table person وجود نداره!
یا نام جدول اشتباه میزنید ویا واقعا این جدول در دیتابیس تون وجود نداره!
اینا کلاس های دیتا بیس هستن مشکل اتصال یا غلط املایی ندارن

public class info_db {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "book1";
public static final String DATA_ID = "id";
public static final String DATA_CATEGORY = "category";
public static final String DATA_NAME = "name";
public static final String DATA_FILED = "filed";
public static final String DATA_DISC = "disc";
public static final String DATA_IMAGE = "image";
public static final String DATA_FAV = "fav";
public static final String PACKAGE = "data/data/com.ehsan.bookthink/databases/";
public static final String DATABASE_SOURCE = "book1.db";
}

package com.ehsan.bookthink.Model;

public class Person {


private int id;
private String category;
private String name;
private String filed;
private String disc;
private String image;
private int fav;

public Person() {
}


public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getCategory() {
return category;
}

public void setCategory(String category) {
this.category = category;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getFiled() {
return filed;
}

public void setFiled(String filed) {
this.filed = filed;
}

public String getDisc() {
return disc;
}

public void setDisc(String disc) {
this.disc = disc;
}

public String getImage() {
return image;
}

public void setImage(String image) {
this.image = image;
}

public int getFav() {
return fav;
}

public void setFav(int fav) {
this.fav = fav;
}
}

public class DataBase extends SQLiteOpenHelper {
private Context context;
public DataBase(Context context) {
super(context,info_db.DATABASE_NAME,null,info_db.D ATABASE_VERSION);
this.context = context;
isDataBase();
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
private void isDataBase(){
File check = new File(info_db.PACKAGE);
if (check.exists()){
}else{
check.mkdir();
}
check = context.getDatabasePath(info_db.DATABASE_NAME);
if (check.exists()){
}else{
try {
copyDataBase();
}catch (IOException e){
e.printStackTrace();
}
}
}
private void copyDataBase() throws IOException{
InputStream myInput = context.getAssets().open(info_db.DATABASE_SOURCE);
String outFileName = info_db.PACKAGE + info_db.DATABASE_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer,0,length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
public List<Person> getAllPerson(){
SQLiteDatabase db =this.getReadableDatabase();
List<Person> data = new ArrayList<>();
String query = " SELECT * FROM person ";
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex(i nfo_db.DATA_ID)));
person.setCategory(cursor.getString(cursor.getColu mnIndex(info_db.DATA_CATEGORY)));
person.setName(cursor.getString(cursor.getColumnIn dex(info_db.DATA_NAME)));
person.setFiled(cursor.getString(cursor.getColumnI ndex(info_db.DATA_FILED)));
person.setDisc(cursor.getString(cursor.getColumnIn dex(info_db.DATA_DISC)));
person.setImage(cursor.getString(cursor.getColumnI ndex(info_db.DATA_IMAGE)));
person.setFav(cursor.getInt(cursor.getColumnIndex( info_db.DATA_FAV)));
data.add(person);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return data;
}
public List<Person> getiranPerson(){
SQLiteDatabase db = this.getReadableDatabase();
List<Person> data = new ArrayList<>();
String query = " SELECT * FROM person WHERE category = 'irani' ";
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex(i nfo_db.DATA_ID)));
person.setCategory(cursor.getString(cursor.getColu mnIndex(info_db.DATA_CATEGORY)));
person.setName(cursor.getString(cursor.getColumnIn dex(info_db.DATA_NAME)));
person.setFiled(cursor.getString(cursor.getColumnI ndex(info_db.DATA_FILED)));
person.setDisc(cursor.getString(cursor.getColumnIn dex(info_db.DATA_DISC)));
person.setImage(cursor.getString(cursor.getColumnI ndex(info_db.DATA_IMAGE)));
person.setFav(cursor.getInt(cursor.getColumnIndex( info_db.DATA_FAV)));
data.add(person);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return data;
}

public List<Person> getForeignPerson(){
SQLiteDatabase db = this.getReadableDatabase();
List<Person> data = new ArrayList<>();
String query = " SELECT * FROM person WHERE category = 'foreign' ";
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex(i nfo_db.DATA_ID)));
person.setCategory(cursor.getString(cursor.getColu mnIndex(info_db.DATA_CATEGORY)));
person.setName(cursor.getString(cursor.getColumnIn dex(info_db.DATA_NAME)));
person.setFiled(cursor.getString(cursor.getColumnI ndex(info_db.DATA_FILED)));
person.setDisc(cursor.getString(cursor.getColumnIn dex(info_db.DATA_DISC)));
person.setImage(cursor.getString(cursor.getColumnI ndex(info_db.DATA_IMAGE)));
person.setFav(cursor.getInt(cursor.getColumnIndex( info_db.DATA_FAV)));
data.add(person);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return data;

farhad_shiri_ex
پنج شنبه 28 شهریور 1398, 11:07 صبح
اینا کلاس های دیتا بیس هستن مشکل اتصال یا غلط املایی ندارن

شما از EF فریم ورک استفاده میکنید! اگر اینطور هست که نام جدول که در کوئری استفاده میکنید با مدل داده یکسان باشه!
البته ظاهرا از یک دیتابیس آماده استفاده میکنید بنابراین بهتره خود دیتابیس را باز کنید و نام جدول را چک کنید به هرحال مضمون خطا که این هست