بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
عدم کپی شدن دیتابیس در SDCard
مدیریت گفتگو
آخرین تغییر: 11 سال پیش
سلام دوستان خسته نباشید !!
یه پروژه ی کتاب رو واسه تست در حال نوشتن هستم، در بخش دیتابیس نمی دونم چرا فایل دیتابیس رو در محل گفته شده کپی نمیکنه و برنامه کرش میکنه !!
کد دیتابیس :
package ir.mnamazi.mollanasrodin.app;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
public class database extends SQLiteOpenHelper {
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String path = DIR_SDCARD + "/mollanasrodin/database";
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){
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;
}
}
خطای نمایش داده شده در Logcat :
12-31 21:09:51.302: E/Trace(1484): error opening trace file: No such file or directory (2) 12-31 21:09:51.594: D/dalvikvm(1484): newInstance failed: no () 12-31 21:09:51.598: D/AndroidRuntime(1484): Shutting down VM 12-31 21:09:51.598: W/dalvikvm(1484): threadid=1: thread exiting with uncaught exception (group=0xa6195908) 12-31 21:09:51.602: E/AndroidRuntime(1484): FATAL EXCEPTION: main 12-31 21:09:51.602: E/AndroidRuntime(1484): java.lang.RuntimeException: Unable to instantiate application ir.mnamazi.mollanasrodin.app.database: java.lang.InstantiationException: can't instantiate class ir.mnamazi.mollanasrodin.app.database; no empty constructor
کد اکتیویتی :
package ir.mnamazi.mollanasrodin.app;
import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
@SuppressWarnings("unused")
public class Main_book extends ActionBarActivity {
private database db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_book);
Button btn = (Button) findViewById(R.id.button1);
db = new database(this);
db.useable();
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
db.open();
//String s = db.Display(19, 2, "content");
//Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
int s = db.count("content", "title");
Toast.makeText(getApplicationContext(), s+"", Toast.LENGTH_SHORT).show();
//Intent i = new Intent(Main_book.this, list_story.class);
//startActivity(i);
db.close();
//Intent i = new Intent(Main_book.this, list_story.class);
//startActivity(i);
}
});
}
}
پاسخها 1
درود، خسته نباشید !!
بطور اتفاقی برنامه ام رو روی گوشی HTC Wildfire اجرا کردم، دیدم به محض باز کردن برنامه، فورز کلوز میده و کرش میکنه !!
بعد دیدم دیتابیس اصلا روی گوشی کپی نشده، قبلا هم با Note 8.0 برنامه ام رو تست میکردم و مشکلی نداشتم !!
چطور میتونم مشکل رو حل کنم !؟!؟
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات