بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
عدم کپی شدن دیتابیس در SDCard
سلام دوستان خسته نباشید !!
یه پروژه ی کتاب رو واسه تست در حال نوشتن هستم، در بخش دیتابیس نمی دونم چرا فایل دیتابیس رو در محل گفته شده کپی نمیکنه و برنامه کرش میکنه !!
کد دیتابیس :
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
0
بهتر نبود خطی که کرش میکنه رو پیدا میکردی تا توقع داشته باشی ما کل کد شما رو بخونیم و کامپایل کنیم و ارور رو متوجه بشیم کجاست و تازه ببینیم میتونیم کمک کنیم یا نه؟ هر کسی بخواد پاسخ بده به محض دیدن کد ها نظرش رو عوض میکنه.
(11 سال پیش)
0
0
لطفأ، خواهشأ، خواهش میکنم که از عنوان مناسب برای سئوالتون استفاده کنید! (11 سال پیش)
0
0
به هر اندازه که به قوانین توجه نکنید به سوال شما توجه نخواهد شد (نوشته استاد در راهنما سایت ) (11 سال پیش)
0
0
کسی دیگه انتقادی، حرفی، حدیثی، نظری نداره !!؟!!؟!؟! (11 سال پیش)
0
0
چرا من دارم D: ، کدهای activity رو برگردونید سرجاش نگاه کنم. (11 سال پیش)
0
0
@Spirit این درخواست هم انجام شد، نظر، سوال، انتقاد و درخواست دیگه ای نبود :دی ؟؟!؟!؟! (11 سال پیش)
0
0
دقیقا متوجه نشدم، ولی تا کنون ندیدم که از کلاس SQLiteOpenHelper برای خوندن دیتابیس توی SD Card استفاده بشه، شما باید طبق این لینک پیش برید - حالا بعدش باید ببینیم چی میشه :) (11 سال پیش)
0
0
@Spirit خب، کلاس دیتابیس به این لینک تغییر کرد و بازم فرقی نکرد !!! (11 سال پیش)
0
0
@Spirit و ارورهای داده شده در این لینک میتونید ببینید . (11 سال پیش)
0
0
دوستان اینجا یک انجمن تخصصی هست و قراره که همگی از مطالب استفاده کنیم < الان من این تاپیک رو خوندم <
الان دقیقا مشکل چطور رفع شد ؟ اصلا مشکل چی بود ؟
این تاپیک اگه اینجوبی بمونه که با اسپم فرقی نمیکنه ! < لطفا توی پست بعدی نتیجه رو بنویسید که مشکل چی بوده و چطور رفع شده < که همگی استفاده کنیم < خیلی ممنون (11 سال پیش)
+1
0
متاسفانه انجمن اصلا مدیریت نداره و پاسخ این سوالم رو به سختی از طریق پیام خصوصی یکی از دوستان پیدا کردم و لطف کردن کمک کردن، اما الان باز یه مشکل دیگه دارم که در این لینک کسی هنوز جواب مناسب و کارآمد به من نداده . (11 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
محمد نمازی
11 سال پیش
0
0
درود، خسته نباشید !!
بطور اتفاقی برنامه ام رو روی گوشی HTC Wildfire اجرا کردم، دیدم به محض باز کردن برنامه، فورز کلوز میده و کرش میکنه !!
بعد دیدم دیتابیس اصلا روی گوشی کپی نشده، قبلا هم با Note 8.0 برنامه ام رو تست میکردم و مشکلی نداشتم !!
چطور میتونم مشکل رو حل کنم !؟!؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .