2016-09-21 78 views
-3

**這是我的錯誤日誌**沒有這樣的表發現異常SQLite中的Android

09-21 10:49:43.698 24911-24911/com.arkinfosft.mediplus E/SQLiteDatabase: Error inserting Patient_name=dth Patient_contact= Patient_Country=India Patient_email= User_Id=5071 Patient_address= Reg_Date=/Date(1474088400000)/ Patient_state=Gujrat Patient_city=Ahemedabad Patient_photo=photo 
                     android.database.sqlite.SQLiteException: no such table: patient_master (code 1): , while compiling: INSERT INTO patient_master(Patient_name,Patient_contact,Patient_Country,Patient_email,User_Id,Patient_address,Reg_Date,Patient_state,Patient_city,Patient_photo) VALUES (?,?,?,?,?,?,?,?,?,?) 
                      at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
                      at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882) 
                      at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493) 
                      at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
                      at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
                      at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
                      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467) 
                      at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339) 
                      at com.arkinfosft.mediplus.db.DBHelperDatabaseClass.insertPatientMaster(DBHelperDatabaseClass.java:237) 
                      at com.arkinfosft.mediplus.ui.patient.PatientActivity.onConnnectionManagerTaskComplete(PatientActivity.java:335) 
                      at com.arkinfosft.mediplus.services.ConnectionManagerTask.onPostExecute(ConnectionManagerTask.java:60) 
                      at com.arkinfosft.mediplus.services.ConnectionManagerTask.onPostExecute(ConnectionManagerTask.java:27) 
                      at android.os.AsyncTask.finish(AsyncTask.java:631) 
                      at android.os.AsyncTask.access$600(AsyncTask.java:177) 
                      at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
                      at android.os.Handler.dispatchMessage(Handler.java:99) 
                      at android.os.Looper.loop(Looper.java:137) 
                      at android.app.ActivityThread.main(ActivityThread.java:4745) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:511) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                      at dalvik.system.NativeStart.main(Native Method) 

****這是DBhelper類****

public static synchronized DBHelperDatabaseClass getInstance(Context context) { 
    // Use the application context, which will ensure that you 
    // don't accidentally leak an Activity's context. 
    if (sInstance == null) { 
     sInstance = new DBHelperDatabaseClass(context.getApplicationContext()); 
    } 
    return sInstance; 
} 
public DBHelperDatabaseClass(Context context) { 
    super(context, DATABASE_NAME_, null, DATABASE_VERSION); 
} 
@Override 
public void onConfigure(SQLiteDatabase db) { 
    super.onConfigure(db); 
    db.setForeignKeyConstraintsEnabled(true); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 

    String patientMasterTable = "CREATE TABLE `patient_master` (" + 
      "`Patient_Id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + 
      " `Patient_state` TEXT," + 
      " `Patient_photo` TEXT," + 
      " `Patient_email` TEXT," + 
      " `Patient_name` TEXT," + 
      " `Patient_Country` TEXT, " + 
      "`Patient_address` TEXT, " + 
      "` Reg_Date` NUMERIC, " + 
      " `Patient_city` TEXT," + 
      "`Patient_contact` TEXT," + 
      " `User_Id` INTEGER" + 
      ");"; 

    String treatementMasterTable = "CREATE TABLE `treatement_master` (" + 
      " `Treat_date` NUMERIC, " + 
      " `Follow_Date` NUMERIC, " + 
      " `Patient_complain` TEXT, " + 
      " `Remarks` TEXT, " + 
      " `Patient_image` TEXT, " + 
      " `Status` TEXT, " + 
      " `Patient_BP` INTEGER, " + 
      " `SPO_two` INTEGER," + 
      " `Patient_temp` REAL," + 
      " `Referred_Doctor_Name` TEXT," + 
      "`Referred_Hospital_Detail` TEXT, " + 
      " `Advice` TEXT, " + 
      " `Patient_pulse` INTEGER, " + 
      " `Medicine` TEXT, " + 
      " `Patient_Report_Detail` TEXT, " + 
      " `Treat_crno` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE," + 
      " `Counsultancyfee` REAL, " + 
      " `Is_Paid` BLOB, " + 
      " `User_Id` INTEGER NOT NULL UNIQUE, " + 
      " `Patient_Id` INTEGER NOT NULL UNIQUE, " + 
      " FOREIGN KEY(`Patient_Id`) REFERENCES patient_master " + 
      ");"; 

    db.execSQL(treatementMasterTable); 

    Log.i("treatement table", "success"); 
    db.execSQL(patientMasterTable); 
    Log.i("patient table", "success"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_PATIENT); 
    db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_TREATEMENT); 
    onCreate(db);  // Calling OnCreate method with database object. 

} 
+0

嘿爲什麼你用逗號書寫了字段和表的名字? –

+0

@PreetikaKaur這是一個老的MySQL病... –

回答

0

如果你正在使用模擬器你可以拉的數據庫文件,並檢查是否建立或不表,如果您使用的設備,您可以使用此命令

CD/DD:\的Android \ SDK \平臺工具

ADB -d殼

運行作爲com.pkg.pkgname

貓/data/data/com.pkg.pkgname/databases/UR_DB_NAME>/SD卡/ UR_DB_NAME

它將複製你的數據庫文件到設備的SD卡。使用Sqlite browser你可以打開db文件並檢查表是否被創建

也嘗試去除圍繞表名稱和字段名稱的單個逗號並嘗試。