PDA

View Full Version : مشکل در برقراری ارتباط با دیتابیس آماده در برنامه



Ebrahimkh
شنبه 06 تیر 1394, 15:38 عصر
سلام دوستان
من یه دیتابیس آماده دارم که می خوام تو برنامم ازش استفاده کنم ولی هر کاری می کنم نمی تونم اطلاعات رو بخونم
با استفاده از راهنمایی های دوست عزیزمون که تو این تاپیکه یه سری کارها روش کردم ولی بازم جواب نگرفتم

http://barnamenevis.org/showthread.php?441406-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-SQLite-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%A8%D8%AF%D9%88%D9%86-%D9%86%DB%8C%D8%A7%D8%B2-%D8%A8%D9%87-%DA%A9%D9%84%D8%A7%D8%B3-DataBaseHelper&p=1987677&viewfull=1#post1987677

اینم سورسمه
مشکل کار کجاست


public class MainActivity extends Activity {

private TextView textView, textView2, textView3;
private MyDatabase MyDataBase;

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

textView = (TextView) findViewById(R.id.textView1);
textView2 = (TextView) findViewById(R.id.textView2);
textView3 = (TextView) findViewById(R.id.textView3);
MyDataBase = new MyDatabase(this);
MyDataBase.getReadableDatabase();

String DATABASE_NAME = MyDataBase.getDatabaseName();
String TABLE_NAME = "khh";
try {
SQLiteDatabase mydb = openOrCreateDatabase(DATABASE_NAME,
Context.MODE_PRIVATE, null);
Cursor allrows = mydb.rawQuery("SELECT * FROM " + TABLE_NAME, null);
if (allrows.moveToFirst()) {
do {
String id = allrows.getString(0);
String name = allrows.getString(1);
String text = allrows.getString(2);

// Show values with Toast
Toast.makeText(getApplicationContext(), id,
Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), name,
Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), text,
Toast.LENGTH_LONG).show();
} while (allrows.moveToNext());
}
mydb.close();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG)
.show();
}
}

}

class MyDatabase extends SQLiteAssetHelper {

private static final String DATABASE_NAME = "ebrahim.db";
private static final int DATABASE_VERSION = 1;

public MyDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
setForcedUpgrade();
}
}

poorman
شنبه 06 تیر 1394, 16:03 عصر
سلام

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

مشکلی که پیش میاد اکثرا اینه که اسم پوشه داخل assets رو دقت نمیکنن، اسم این پوشه databases هست که بعضی وقتا s آخر اون جا میفته
یا فرمت نامگذاری فایل زیپ که حتما باید به این شکل باشه name.db.zip

به هرحال کدتون تا جایی که میبینم خطایی نداره.

اگر مراحل رو با دقت انجام دادید و باز مشکل داشتید، log cat خطا رو بذارید اینجا به همراه یک عکس از محتویات پوشه assets

Ebrahimkh
شنبه 06 تیر 1394, 16:20 عصر
سلام poorman (http://barnamenevis.org/member.php?295320-poorman) جان
من تمام مراحل رو با دقت پیش رفتم

یه سوال بعد از این قسمت
MyDataBase.getReadableDatabase

کد من بنظرت درسته ؟؟؟!!!

poorman
شنبه 06 تیر 1394, 16:28 عصر
آها نه الان دقت کردم دیدم کد شما مشکل داره

کدتون رو تغییر دادم فکر کنم درست کار کنه





public class MainActivity extends Activity {

private TextView textView, textView2, textView3;
private MyDatabase MyDataBase;

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

textView = (TextView) findViewById(R.id.textView1);
textView2 = (TextView) findViewById(R.id.textView2);
textView3 = (TextView) findViewById(R.id.textView3);
MyDataBase = new MyDatabase(this);

String TABLE_NAME = "khh";
try {
SQLiteDatabase mydb = MyDataBase.getReadableDatabase();
Cursor allrows = mydb.rawQuery("SELECT * FROM " + TABLE_NAME, null);
if (allrows.moveToFirst()) {
do {
String id = allrows.getString(0);
String name = allrows.getString(1);
String text = allrows.getString(2);

// Show values with Toast
Toast.makeText(getApplicationContext(), id,
Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), name,
Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), text,
Toast.LENGTH_LONG).show();
} while (allrows.moveToNext());
}
mydb.close();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG)
.show();
}
}

}

class MyDatabase extends SQLiteAssetHelper {

private static final String DATABASE_NAME = "ebrahim.db";
private static final int DATABASE_VERSION = 1;

public MyDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
setForcedUpgrade();
}
}

Ebrahimkh
شنبه 06 تیر 1394, 16:31 عصر
کار نکرد

اینم پروژه(پروژه نیست فقط می خوام یه ارتباط برقرار کنم :قلب:)


http://s6.picofile.com/file/8196131826/Zzdatabase.zip.html

قربون دستت یه نگاه بنداز

poorman
شنبه 06 تیر 1394, 16:51 عصر
مشکل شما این بود که فایل دیتابیس رو تبدیل به زیپ نکردین
شما فقط به آخر فایل یک پسوند زیپ اضافه کردید !!!

توسط نرم افزار zip یا winRar فایل دیتابیس رو باید به صورت زیپ در بیارید

Ebrahimkh
شنبه 06 تیر 1394, 17:16 عصر
ممنون
poorman (http://barnamenevis.org/member.php?295320-poorman) عزیز درست شد

دمت گرم:قلب::بوس::بوس::بوس::بوس:

hadis277
یک شنبه 15 شهریور 1394, 13:44 عصر
سلام من مراحلو عین شما رفتم ولی کرش میکنه و علت خطا اینه :
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.database.sqlite.SQLiteDatabase.getVersion( )' on a null object reference
و خط خطا هم روی اینه : ;()database=myConnection.getReadableDatabase