簡體   English   中英

有關Android App卸載和表狀態的常見問題

[英]General Questions Regarding Android App Uninstall and Status of Tables

我是android的新手,遇到困難時,我已在表中插入ID為主鍵唯一的表,當我試圖從設備上卸載應用程序並嘗試重新安裝時,在插入過程中出現“主鍵必須是唯一的”錯誤明確指出,卸載應用程序不會刪除TABLES。

請對此表信息做評論。這對我來說是個大問題,我只是因為這個問題才動搖腦筋

SQLITEHelper的代碼:

package com.survey.management.util;

import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHelper extends SQLiteOpenHelper {

    public static final String DB_NAME = "surveyapp.db";
    private static final int DB_VER = 1;
    private static final String TAG = "DATABASE_HELPER";
    private static final String parameterString = "CREATE TABLE IF NOT EXISTS parameterTable(ID INTEGER PRIMARY KEY AUTOINCREMENT,param_type TEXT,cash_code TEXT,param_description TEXT)";
    private static final String menuFieldsString = "CREATE TABLE IF NOT EXISTS menu_fieldsTable('ID' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'menu_id' INTEGER NOT NULL,'field_type_id' INTEGER NOT NULL,'c4w_code' TEXT,'field_label' TEXT NOT NULL,'field_values' TEXT,'date_created' DATETIME,'date_modified' DATETIME,'is_required' INTEGER DEFAULT 0,'is_static' INTEGER DEFAULT 0,'field_order' INTEGER DEFAULT NULL)";
    private static final String briefTable = "CREATE TABLE IF NOT EXISTS proposalEnquiry('ID' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'caller_name' TEXT NOT NULL,'telephone_number' TEXT DEFAULT NULL,'email_address' TEXT NOT NULL,'address' TEXT NOT NULL,'requirements' TEXT NOT NULL,'work_done' TEXT DEFAULT NULL,'proposal_id' INTEGER DEFAULT NULL,'date_created' datetime DEFAULT NULL,'date_modified' datetime DEFAULT NULL,'system_type' TEXT DEFAULT NULL,'premises_type' TEXT DEFAULT NULL,'premises_size' TEXT DEFAULT NULL,'internal_notes' TEXT,'company_name' TEXT DEFAULT NULL,'post_code' TEXT NOT NULL,'hear_for_us' TEXT DEFAULT NULL,'surveyor' TEXT DEFAULT NULL,'estimator' TEXT DEFAULT NULL)";
    private static final String customerTable = "CREATE TABLE IF NOT EXISTS customer('ID' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'company_name' TEXT ,'contact_person_name' TEXT,'email_address' TEXT ,'contact_person_title' TEXT DEFAULT NULL,'customer_no' TEXT DEFAULT NULL,'contact_person_position' TEXT DEFAULT NULL,'dear_name' TEXT DEFAULT NULL,'address_1' TEXT DEFAULT NULL,'address_2' TEXT DEFAULT NULL,'address_3' TEXT DEFAULT NULL,'address_4' TEXT DEFAULT NULL,'postcode' TEXT DEFAULT NULL,'telephone_number' TEXT DEFAULT NULL,'mobile_number' TEXT DEFAULT NULL,'fax_number' TEXT DEFAULT NULL,'vat_number' TEXT DEFAULT NULL,'email_address_for_invoicing' TEXT DEFAULT NULL)";
    private static final String mainSetupTable = "CREATE TABLE IF NOT EXISTS main_setup('ID' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'surveyour_id' INTEGER DEFAULT NULL,'enquiry_no' TEXT DEFAULT NULL,'status' TEXT NOT NULL,'end_user_contractor' TEXT DEFAULT NULL,'proposal_type' TEXT DEFAULT NULL, 'proposal_based' TEXT DEFAULT NULL, 'invoice_method' TEXT DEFAULT NULL, 'deposit_required' REAL DEFAULT NULL, 'Increase_in_maint' TEXT DEFAULT NULL, 'completion_date' DATE DEFAULT NULL, 'date_created' DATETIME NULL, 'date_modified' DATETIME , 'version' REAL  DEFAULT 1,  'estimator_id' INTEGER DEFAULT NULL, 'enquiry_date' DATE DEFAULT NULL, 'quotation_date' DATE DEFAULT NULL, 'enquiry_type' TEXT DEFAULT NULL, 'created_by' INTEGER NOT NULL, 'assigned_me' INTEGER DEFAULT NULL,'total_cost' REAL,'total_sale' REAL, 'vat' TEXT DEFAULT NULL, 'appointment_date' DATE DEFAULT NULL , 'appointment_time' TIME DEFAULT NULL, 'contract_type' TEXT DEFAULT NULL,'contract_term' TEXT DEFAULT NULL,'quotation_sent_date' DATETIME DEFAULT NULL, 'proposal_due_date' DATETIME DEFAULT NULL ,'email_sent_by_user' INTEGER,'assigned_surveyour' INTEGER,'email_sent_time' DATETIME DEFAULT NULL,'linked_to' INTEGER)";



public DatabaseHelper(Context context) {
        super(context,DB_NAME,null,DB_VER);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {


        db.execSQL(parameterString);
        db.execSQL(menuFieldsString);
        db.execSQL(briefTable);
        db.execSQL(customerTable);
        db.execSQL(mainSetupTable);
        Log.i(TAG,"parameter table onCreate executed..........!");

    }

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

        Log.w(TAG,"Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data");
        try {
            db.execSQL("DROP TABLE IF EXISTS parameterString");

            onCreate(db);

        }
        catch (SQLException e) {
            Log.e(TAG, "getting exception " + e.getLocalizedMessage().toString());
            ExceptionHandler.logException(e);
        }
    }

}

這取決於您在哪里創建數據庫。 如果它是在默認位置“ ... data \\ data \\\\ databases”中創建的,則在卸載應用程序時將其刪除。

您必須在外部SD卡或其他位置指定了路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM