sadeghmohebbi 2 ارسال شده در ۲۰ مرداد ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ سلام اخیر یه مشکل عجیب توی ساخت دیتابیس برخوردم کد زیر برای ساخت دیتابیسه (کلاسی که خودم ساختم) package com.sadegh.mte.database; import java.util.ArrayList; import java.util.List; 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 DBAdapter { String[] AllColumnForStudents = { KEY_ROWID, KEY_NAME, KEY_LEVEL, KEY_LASTBOOK, KEY_CLASSID, KEY_START_CLASSDATE_YEAR, KEY_START_CLASSDATE_MONTH, KEY_START_CLASSDATE_DAY, KEY_END_CLASSDATE_YEAR, KEY_END_CLASSDATE_MONTH, KEY_END_CLASSDATE_DAY, KEY_CLASSTIME, KEY_DESC, KEY_IMAGE }; static final String TAG = "sadegh"; static final String KEY_ROWID = "_id"; static final String KEY_NAME = "name"; static final String KEY_LEVEL = "level"; static final String KEY_LASTBOOK = "lastbook"; static final String KEY_CLASSID = "classid"; static final String KEY_START_CLASSDATE_YEAR = "classdate_year"; static final String KEY_START_CLASSDATE_MONTH = "classdate_month"; static final String KEY_START_CLASSDATE_DAY = "classdate_day"; static final String KEY_END_CLASSDATE_YEAR = "classdate_year"; static final String KEY_END_CLASSDATE_MONTH = "classdate_month"; static final String KEY_END_CLASSDATE_DAY = "classdate_day"; static final String KEY_CLASSTIME = "classtime"; static final String KEY_DESC = "description"; static final String KEY_IMAGE = "image"; static final String DATABASE_NAME = "db"; static final String DATABASE_STUDENTS_TABLE = "students"; static final int DATABASE_VERSION = 2; static final String CREATE_STUDENTS_TABLE = "CREATE TABLE IF NOT EXISTS " + DATABASE_STUDENTS_TABLE +"("+KEY_ROWID+ " integer primary key autoincrement, " + KEY_NAME+ " TEXT," + KEY_LEVEL+ " TEXT," + KEY_LASTBOOK+ " TEXT," + KEY_CLASSID+ " TEXT," + KEY_START_CLASSDATE_YEAR+ " TEXT," + KEY_START_CLASSDATE_MONTH+ " TEXT," + KEY_START_CLASSDATE_DAY+ " TEXT," + KEY_END_CLASSDATE_YEAR+ " TEXT," + KEY_END_CLASSDATE_MONTH+ " TEXT," + KEY_END_CLASSDATE_DAY+ " TEXT," + KEY_CLASSTIME+ " TEXT," + KEY_DESC+ " TEXT," + KEY_IMAGE+" TEXT);"; final Context context; DatabaseHelper DBHelper; SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { try { db.execSQL(CREATE_STUDENTS_TABLE); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS "+ DATABASE_STUDENTS_TABLE); Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); onCreate(db); } } // --- open database --- public DBAdapter open() { db = DBHelper.getWritableDatabase(); return this; } // --- close database --- public void close() { DBHelper.close(); } //---insert a student into the database--- public long insertStudent(String name, String level, String lastbook, String classid, String startclassdateY, String startclassdateM, String startclassdateD, String endclassdateY, String endclassdateM, String endclassdateD, String classtime, String description, String image) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_NAME,name); initialValues.put(KEY_LEVEL,level); initialValues.put(KEY_LASTBOOK,lastbook); initialValues.put(KEY_CLASSID,classid); initialValues.put(KEY_START_CLASSDATE_YEAR,startclassdateY); initialValues.put(KEY_START_CLASSDATE_MONTH,startclassdateM); initialValues.put(KEY_START_CLASSDATE_DAY,startclassdateD); initialValues.put(KEY_END_CLASSDATE_YEAR,endclassdateY); initialValues.put(KEY_END_CLASSDATE_MONTH,endclassdateM); initialValues.put(KEY_END_CLASSDATE_DAY,endclassdateD); initialValues.put(KEY_CLASSTIME,classtime); initialValues.put(KEY_DESC,description); initialValues.put(KEY_IMAGE,image); return db.insert(DATABASE_STUDENTS_TABLE, null, initialValues); } //---deletes a particular student--- public boolean deleteContact(String name,String table) { return db.delete(table, KEY_NAME + " LIKE '" + name + "'", null) > 0; } public List getAllStudents() { Cursor cursorAll = db.query(DATABASE_STUDENTS_TABLE, AllColumnForStudents, null, null, null, null, null); List studentsList = cursorToList(cursorAll); return studentsList; } private List cursorToList(Cursor cursor) { List studentsList = new ArrayList(); if(cursor.getCount() > 0) { while(cursor.moveToNext()) { Student student = new Student(); student.setId(cursor.getString(cursor.getColumnIndex(KEY_ROWID))); student.setName(cursor.getString(cursor.getColumnIndex(KEY_NAME))); student.setLevel(cursor.getString(cursor.getColumnIndex(KEY_LEVEL))); student.setLastBook(cursor.getString(cursor.getColumnIndex(KEY_LASTBOOK))); student.setClassId(cursor.getString(cursor.getColumnIndex(KEY_CLASSID))); student.setStartClassDateYear(cursor.getString(cursor.getColumnIndex(KEY_START_CLASSDATE_YEAR))); student.setStartClassDateMonth(cursor.getString(cursor.getColumnIndex(KEY_START_CLASSDATE_MONTH))); student.setStartClassDateDay(cursor.getString(cursor.getColumnIndex(KEY_START_CLASSDATE_DAY))); student.setEndClassDateYear(cursor.getString(cursor.getColumnIndex(KEY_END_CLASSDATE_YEAR))); student.setEndClassDateMonth(cursor.getString(cursor.getColumnIndex(KEY_END_CLASSDATE_MONTH))); student.setEndClassDateDay(cursor.getString(cursor.getColumnIndex(KEY_END_CLASSDATE_DAY))); student.setClassTime(cursor.getString(cursor.getColumnIndex(KEY_CLASSTIME))); student.setDescription(cursor.getString(cursor.getColumnIndex(KEY_DESC))); student.setImage(cursor.getString(cursor.getColumnIndex(KEY_IMAGE))); studentsList.add(student); } } return studentsList; } public Cursor getStudent(String name ,String table) { Cursor studentCursor = db.query(true, table, AllColumnForStudents, KEY_NAME + " LIKE '" + name + "'", null, null, null, null, null); if(studentCursor != null) { studentCursor.moveToFirst(); } return studentCursor; } //---search--- public List findStudentsFromName(String name, String table) { Cursor cursor = db.query(true, table, AllColumnForStudents, KEY_NAME + " LIKE '%" + name + "%'", null, null, null, null, null); List studentsList = cursorToList(cursor); return studentsList; } public boolean updateStudent(long rowId, String name, String level, String lastbook, String classid, String startclassdateY, String startclassdateM, String startclassdateD, String endclassdateY, String endclassdateM, String endclassdateD, String classtime, String description, String image) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_NAME,name); initialValues.put(KEY_LEVEL,level); initialValues.put(KEY_LASTBOOK,lastbook); initialValues.put(KEY_CLASSID,classid); initialValues.put(KEY_START_CLASSDATE_YEAR,startclassdateY); initialValues.put(KEY_START_CLASSDATE_MONTH,startclassdateM); initialValues.put(KEY_START_CLASSDATE_DAY,startclassdateD); initialValues.put(KEY_END_CLASSDATE_YEAR,endclassdateY); initialValues.put(KEY_END_CLASSDATE_MONTH,endclassdateM); initialValues.put(KEY_END_CLASSDATE_DAY,endclassdateD); initialValues.put(KEY_CLASSTIME,classtime); initialValues.put(KEY_DESC,description); initialValues.put(KEY_IMAGE,image); return db.update(DATABASE_STUDENTS_TABLE, initialValues, KEY_ROWID + "=" + rowId, null) > 0; } } توی این پروژه رد صفحه ی اول وقتی روی دکمه کلیک می کنم باید به یه صفحه ی دیگه بره و دیتابیس رو روی لیست ویو بندازه...با استفاده از متد getAllStudents() دیباگ هم که کردم می یاد رو این خط و وای می سه. (نمی دونم مشکل از کجاست تا حلش کنم) Cursor cursorAll = db.query(DATABASE_STUDENTS_TABLE, AllColumnForStudents, null, null, null, null, null); insert هم کردم ولی فرقی نکرده، هر جا که نیاز به نام table باشه خطا می ده و می گه همچین table ای وجود نداره!!!!!!!! لطفا کمک نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
Mostafa Nasiri 16 ارسال شده در ۲۰ مرداد ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ من این کدو تست نکردم اما دو نکته: شما آرایه AllColumnForStudents رو بعد از اینکه به نام فیلدهات مقدار دادی تعریف کن اگر میخوای تو متد query تمام ستون ها رو انتخاب کنی میتونی به جای اون AllColumnForStudents که گذاشتی null بزاری تا همرو بگیره موفق باشید نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
sadeghmohebbi 2 ارسال شده در ۲۰ مرداد ۱۳۹۴ مالک گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ من این کدو تست نکردم اما دو نکته: شما آرایه AllColumnForStudents رو بعد از اینکه به نام فیلدهات مقدار دادی تعریف کن اگر میخوای تو متد query تمام ستون ها رو انتخاب کنی میتونی به جای اون AllColumnForStudents که گذاشتی null بزاری تا همرو بگیره موفق باشید ممنون AllColumnForStudents گذاشتم بعد فیلد ها ، بازم همون ارور رو داد. جاش null هم گذاشتم فرقی نکرد باید چی کار کنم؟ مشکل از کجاست؟ چرا میگه این تیبل نیس؟ نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
Seyed-Hossein-Akbari 92 ارسال شده در ۲۰ مرداد ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ سلام یک بار برنامه رو پاک کنید دوباره نصب بشه ! اینطوری میشناسه ! اگر اینطوری نشناخت و از کد دیتابیس خارجی استفاده کردید ! باید جدول metadata رو به جدولهاتون اضافه کنید . تو گوگل سرچ بزنید میاد . موفق باشید نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
sadeghmohebbi 2 ارسال شده در ۲۰ مرداد ۱۳۹۴ مالک گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ سلام یک بار برنامه رو پاک کنید دوباره نصب بشه ! اینطوری میشناسه ! اگر اینطوری نشناخت و از کد دیتابیس خارجی استفاده کردید ! باید جدول metadata رو به جدولهاتون اضافه کنید . تو گوگل سرچ بزنید میاد . موفق باشید ممنون دوباره نصب و پاک کردم ولی درست نشد قبلا از همین روش یه دیتابیس ساخته بودم، مشکلی نداشت ولی الان این طوری شده! داخل DDMS هم که نگاه کردم فایل دیتابیس رو می سازه منظورتون رو از دیتابیس خارخی و جدول metadata رو نفهمیدم! می شه یه لینک معرفی کنید؟ پروژه رو هم گذاشتم اگه نیاز شد... لطفا راهنمایی کنید ManageTeachingEnglish.zip نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
Mostafa Nasiri 16 ارسال شده در ۲۰ مرداد ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ همونطور که آقای hosseinakbari گفتن بعد از حذف و نصب دوباره برنامه باید مشکل رفع بشه شما یه نگاه به لینکای زیر بنداز [align=left]http://stackoverflow.com/questions/9916590/android-sqlite-no-such-table-exception[/align] [align=left]http://stackoverflow.com/questions/6554269/android-sqlite-no-such-table-error[/align] [align=left]http://stackoverflow.com/questions/19003489/androidsqlite-error-no-such-table[/align] [align=left]http://stackoverflow.com/questions/21853135/android-sqlite-database-no-such-table[/align] [align=left]https://developer.appcelerator.com/question/137123/sqlite-no-such-table-though-table-exists[/align] [align=left]https://developer.appcelerator.com/question/176945/error-with-select-table-no-such-table[/align] [align=left]http://peter.grman.at/android-sqlite-exception-no-such-table[/align] [align=right]لینک آخرو حتما نگاه کن[/align] نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
sadeghmohebbi 2 ارسال شده در ۲۰ مرداد ۱۳۹۴ مالک گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ همونطور که آقای hosseinakbari گفتن بعد از حذف و نصب دوباره برنامه باید مشکل رفع بشه شما یه نگاه به لینکای زیر بنداز [align=left]http://stackoverflow.com/questions/9916590/android-sqlite-no-such-table-exception[/align] [align=left]http://stackoverflow.com/questions/6554269/android-sqlite-no-such-table-error[/align] [align=left]http://stackoverflow.com/questions/19003489/androidsqlite-error-no-such-table[/align] [align=left]http://stackoverflow.com/questions/21853135/android-sqlite-database-no-such-table[/align] [align=left]https://developer.appcelerator.com/question/137123/sqlite-no-such-table-though-table-exists[/align] [align=left]https://developer.appcelerator.com/question/176945/error-with-select-table-no-such-table[/align] [align=left]http://peter.grman.at/android-sqlite-exception-no-such-table[/align] [align=right]لینک آخرو حتما نگاه کن[/align] ممنون رفتم دقیق چک کردم فهمیدم که اسم ستون هایی که توی فیلد ها تعریف کرده بودم تکراریه: static final String KEY_ROWID = "_id"; static final String KEY_NAME = "name"; static final String KEY_LEVEL = "level"; static final String KEY_LASTBOOK = "lastbook"; static final String KEY_CLASSID = "classid"; ////// static final String KEY_START_CLASSDATE_YEAR = "classdate_year"; ///////// static final String KEY_START_CLASSDATE_MONTH = "classdate_month"; /////// static final String KEY_START_CLASSDATE_DAY = "classdate_day"; >>>>>>> static final String KEY_END_CLASSDATE_YEAR = "classdate_year"; >>>>>> static final String KEY_END_CLASSDATE_MONTH = "classdate_month"; >>>>> static final String KEY_END_CLASSDATE_DAY = "classdate_day"; static final String KEY_CLASSTIME = "classtime"; static final String KEY_DESC = "description"; static final String KEY_IMAGE = "image"; بعد الان که دوباره اجرا می کنم خطای nullpointer می ده روی لیست ویو... import java.util.List; import com.sadegh.mte.R; import com.sadegh.mte.database.DBAdapter; import com.sadegh.mte.database.Student; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; public class StudentsActivity extends ListActivity { static final String DATABASE_STUDENTS_TABLE = "students"; Button add_btn, search_btn, today_btn, all_btn; ListView list; DBAdapter db; List studentsList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.students_main); //add_btn = (Button) findViewById(R.id.add_btn); db = new DBAdapter(this); db.open(); db.getAllStudents(); refreshList(); } @Override protected void onPause() { super.onPause(); db.close(); } @Override protected void onResume() { super.onResume(); db.open(); studentsList = db.getAllStudents(); refreshList(); } private void refreshList() { ArrayAdapter adapter; adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, studentsList); setListAdapter(adapter); } } دیباگ که کردم روی خط های آخر (روی setListAdapter(adapter) وای میایسته کد xml مربوطه لی اوت xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > android:id="@+id/textView1overView" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center_horizontal" android:background="#2b815a" android:padding="5dp" android:text="@string/students" android:textAppearance="?android:attr/textAppearanceLarge" /> android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" > لطفا کمک! خیلی روش کار کردم ولی بازم ارور داره... نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
Mostafa Nasiri 16 ارسال شده در ۲۰ مرداد ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ خط زیر رو به onCreate اضافه کن ببین چی میشه list = getListView() نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
sadeghmohebbi 2 ارسال شده در ۲۰ مرداد ۱۳۹۴ مالک گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ خط زیر رو به onCreate اضافه کن ببین چی میشه list = getListView() ممنون اضافه کردم ولی متاسفانه فرقی نکرد (دقیقا بعد از setContentView() اضافه کردم) ارور های زیر رو می ده: 08-11 04:45:51.498: W/dalvikvm(1974): threadid=1: thread exiting with uncaught exception (group=0xb4a6bb90) 08-11 04:45:51.568: E/AndroidRuntime(1974): FATAL EXCEPTION: main 08-11 04:45:51.568: E/AndroidRuntime(1974): Process: com.sadegh.mte, PID: 1974 08-11 04:45:51.568: E/AndroidRuntime(1974): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sadegh.mte/com.sadegh.mte.students.StudentsActivity}: java.lang.NullPointerException 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.app.ActivityThread.access$700(ActivityThread.java:135) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.os.Handler.dispatchMessage(Handler.java:102) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.os.Looper.loop(Looper.java:137) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.app.ActivityThread.main(ActivityThread.java:4998) 08-11 04:45:51.568: E/AndroidRuntime(1974): at java.lang.reflect.Method.invokeNative(Native Method) 08-11 04:45:51.568: E/AndroidRuntime(1974): at java.lang.reflect.Method.invoke(Method.java:515) 08-11 04:45:51.568: E/AndroidRuntime(1974): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 08-11 04:45:51.568: E/AndroidRuntime(1974): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 08-11 04:45:51.568: E/AndroidRuntime(1974): at dalvik.system.NativeStart.main(Native Method) 08-11 04:45:51.568: E/AndroidRuntime(1974): Caused by: java.lang.NullPointerException 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.widget.ListView.setAdapter(ListView.java:480) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.app.ListActivity.setListAdapter(ListActivity.java:265) 08-11 04:45:51.568: E/AndroidRuntime(1974): at com.sadegh.mte.students.StudentsActivity.refreshList(StudentsActivity.java:53) 08-11 04:45:51.568: E/AndroidRuntime(1974): at com.sadegh.mte.students.StudentsActivity.onCreate(StudentsActivity.java:32) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.app.Activity.performCreate(Activity.java:5243) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 08-11 04:45:51.568: E/AndroidRuntime(1974): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140) 08-11 04:45:51.568: E/AndroidRuntime(1974): ... 11 more :huh: نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
Mostafa Nasiri 16 ارسال شده در ۲۰ مرداد ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ این خط کد db.getAllStudents() که توی onCreate شما هست باید اصلاح بشه studentsList = db.getAllStudents() نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
sadeghmohebbi 2 ارسال شده در ۲۰ مرداد ۱۳۹۴ مالک گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ این خط کد db.getAllStudents() که توی onCreate شما هست باید اصلاح بشه studentsList = db.getAllStudents() واقعا یه دنیا ممنون حل شد............................ نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
Mostafa Nasiri 16 ارسال شده در ۲۰ مرداد ۱۳۹۴ گزارش اشتراک گذاری ارسال شده در ۲۰ مرداد ۱۳۹۴ خب خداروشکر نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .