bnyamin

یه ارور همیشگی در Logcat

3 ارسال در این موضوع قرار دارد

سلام

این خطا رو همیشه در هنگام اجرای برنامه در LogCat ظاهر میشه---البته برنامه اجرا میشه--در ابتدای گزارش LogCat

اشاره کرده به Close() که ظاهر مربوط میشه به Database.java اما حقیقتش درست درمون مشکلشو نفهمیدم

اینم گزارشLogCat

02-14 11:01:17.218: E/SQLiteDatabase(14703): close() was never explicitly called on database '/data/data/ir.tahaquran.zanashoyi/databases/zanashoyi' 02-14 11:01:17.218: E/SQLiteDatabase(14703): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1943)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:962)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at ir.tahaquran.zanashoyi.database.checkdb(database.java:78)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at ir.tahaquran.zanashoyi.database.useable(database.java:48)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at ir.tahaquran.zanashoyi.MainActivity.onCreate(MainActivity.java:42)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.app.Activity.performCreate(Activity.java:4465)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.app.ActivityThread.access$600(ActivityThread.java:127)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.os.Handler.dispatchMessage(Handler.java:99)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.os.Looper.loop(Looper.java:137)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at android.app.ActivityThread.main(ActivityThread.java:4441)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at java.lang.reflect.Method.invokeNative(Native Method)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at java.lang.reflect.Method.invoke(Method.java:511)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)02-14 11:01:17.218: E/SQLiteDatabase(14703): 	at dalvik.system.NativeStart.main(Native Method)

اینم دستورات موجود تو Database.java

package ir.tahaquran.zanashoyi;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;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;import android.util.Log;public class database extends SQLiteOpenHelper {   public final String   path = "/data/data/ir.tahaquran.zanashoyi/databases/";   public final String   Name = "zanashoyi";   public SQLiteDatabase mydb;   private final Context mycontext;   public database(Context context) {       super(context, "zanashoyi", null, 1);       mycontext = context;   }   @Override   public void onCreate(SQLiteDatabase arg0) {   }   @Override   public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {   }   public void useable() {       boolean checkdb = checkdb();       if (checkdb) {Log.i(Name, "chekkkk");       } else {       	Log.i(Name, "chekelse else else else else else else ");           this.getReadableDatabase();           try {               copydatabase();           }           catch (IOException e) {	           }       }   }   public void open() {       mydb = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READWRITE);   }   @Override   public void close() {       mydb.close();   }   public boolean checkdb() {       SQLiteDatabase db = null;       try {           db = SQLiteDatabase.openDatabase(path + Name, null, SQLiteDatabase.OPEN_READONLY);       }       catch (SQLException e) {       }       return db != null ? true : false;   }   public void copydatabase() throws IOException {       OutputStream myOutput = new FileOutputStream(path + Name);       byte[] buffer = new byte[1024];       int lenght;       InputStream myInput = mycontext.getAssets().open(Name);       while ((lenght = myInput.read(buffer)) > 0) {           myOutput.write(buffer, 0, lenght);       }       myInput.close();       myOutput.flush();       myOutput.close();   }   //-----namayesh_matn--------   public String namayesh_matn (String name){   	Cursor Cursor = mydb.rawQuery("select * from zanashoyidb where name='"+name+"'",null);   	Cursor.moveToFirst();   	String save = Cursor.getString(2);   	return save;   }   //-----namayesh_fav_matn--------   public String namayesh_fav_matn (String name){   	Cursor Cursor = mydb.rawQuery("select * from zanashoyidb where name='"+name+"'",null);   	Cursor.moveToFirst();   	String save = Cursor.getString(4);   	return save;   }   //-----fehrest_two--------   public ArrayList fehrest( int col,String part){   	ArrayList list = new ArrayList();   	Cursor cursor;   	cursor = mydb.rawQuery("select * from zanashoyidb where ezafi  LIKE '%"+part+"%' ORDER BY ezafi ASC", null);   	if(cursor.getCount()>0)   	{   		while(cursor.moveToNext())   		{   			list.add(cursor.getString(col));   		}   	}   	return list;   }   //----------------search-------------------   public ArrayList search( int col , String word , String field){   	ArrayList list = new ArrayList();   	Cursor cursor;   	if (field.equals("name")) {   		cursor = mydb.rawQuery("select * from zanashoyidb where "+field+" like '%"+word+"%' ", null);	}else {   		cursor = mydb.rawQuery("select * from zanashoyidb where "+field+" like '%"+word+"%'", null);	}   	if(cursor.getCount()>0)   	{   		while(cursor.moveToNext())   		{   			list.add(cursor.getString(col));   		}   	}   	return list;   } //----------------Tedade_search-------------------   public Integer Tedade_search(String word , String field){   	Cursor cursor;   	if (field.equals("name")) {   		cursor = mydb.rawQuery("select * from zanashoyidb where "+field+" like '%"+word+"%' ", null);	}else {   		cursor = mydb.rawQuery("select * from zanashoyidb where "+field+" like '%"+word+"%'", null);	}   	int save = cursor.getCount();   	return save;   } //----------------Update_fav-------------------    public void Update_fav (String name , String value){   	ContentValues cv = new ContentValues();   	cv.put("star", value);   	mydb.update("zanashoyidb", cv, "name='"+name+"'", null);   } //---------------Tedade_fav--------------------   public Integer Tedade_fav(String table){   	Cursor Cursor = mydb.rawQuery("select * from zanashoyidb where star=1 ", null);   	int save = Cursor.getCount();   	return save;   }//------------------namayesh_fav--------------------------------   public ArrayList namayesh_fav(int col){   	ArrayList list = new ArrayList();   	Cursor cursor;   	cursor=mydb.rawQuery("SELECT * FROM zanashoyidb where star=1 ",null);   	if(cursor.getCount() > 0){   			while (cursor.moveToNext()) {   			list.add(cursor .getString(col));				}    	}	return list;   	    }   //--------------Resource-------------------------/*   public String manbaaa(int col){   	Cursor cursor=mydb.rawQuery("SELECT * FROM zanashoyidb where name ='resource'",null);   	return cursor.getString(col);   }*/}

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

دقت کن که بعد از استفاده از دیتابیس توی هر کلاسی ، دیتابیس رو close کنی!

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

همه جا کلوز کردم

تو صفحه اصلی پروزه ام این دستور موجوده در حالی که تو این صفحه اصلا نیازی به دیتایس ندارم وقتی برش میدارم دیگه ارور نمیده ولی برنامه نمیدونم چرا فورس کلوز میده

db = new database(this);

db.useable();

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری