【问题标题】:Trying to access sms.db with sqlite3尝试使用 sqlite3 访问 sms.db
【发布时间】:2012-03-21 16:07:57
【问题描述】:

我通常会删除所有短信,但这次我不小心删除了我需要的对话。我对我的 iphone 4 进行了备份(第一次)。然后我使用 iPhone 备份提取器从备份中提取 sms.db。使用 sqlite3,我看到了大量可以查看已删除短信的教程。但是,所有表似乎都是空的。当我在 notepad++ 中查看 sms.db 文件时,我确实看到了我在很久以前和最近删除的一些消息。但是,我没有在我的所有消息附近看到任何地方,我假设它们就在某个地方。如果 sqlite 产品无法看到它们,我该如何查看它们;但我知道它就在那里。谢谢。

【问题讨论】:

    标签: iphone sqlite


    【解决方案1】:

    你可以试试这个方法

    public class Database_creat {
        private static final String DATABASE_NAME = "ToDo_List.db";
        public static final String DATABASE_TABLE_CATEGORY = "category";
        public static final String DATABASE_TABLE_TODO_LIST = "todo_list";
        private static final int DATABASE_VERSION = 1;
        public ArrayList<ModelToDO> list;
    
    
        private DataBaseHelper mDbhelper;
        private SQLiteDatabase mDb;
    
        Context mContext;
        private static final String DATABASE_CREATE_CATEGORY = "create table category(id integer primary key autoincrement , "
                + "category text not null);";
        private static final String DATABASE_CREATE_TODO_LIST = "create table todo_list(id integer primary key autoincrement , "
                + "title text not null,description text not null,category text not null, due_date Date not null,alarm_time text ,alarm_set text,priority text,parform Boolean);";
    
        private static class DataBaseHelper extends SQLiteOpenHelper {
    
            DataBaseHelper(Context context) {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
                // TODO Auto-generated constructor stub
            }
    
            @Override
            public void onCreate(SQLiteDatabase db) {
                // TODO Auto-generated method stub
                db.execSQL(DATABASE_CREATE_CATEGORY);
                db.execSQL(DATABASE_CREATE_TODO_LIST);
            }
    
            //Delete All todo_list Table info
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                // TODO Auto-generated method stub
                db.execSQL("DROP TABLE IF EXISTS submit");
                onCreate(db);
            }
        }
    
        public Database_creat(Context context) {
            this.mContext = context;
        }
    
        public Database_creat Open() throws SQLException {
            mDbhelper = new DataBaseHelper(mContext);
            mDb = mDbhelper.getWritableDatabase();
            return this;
    
        }
    
        public void close() {
            mDbhelper.close();
        }
    
        //Add new Category name
        public long insertinfo(String cate) {
            ContentValues con = new ContentValues();
            con.put("category", cate);
            return mDb.insert(DATABASE_TABLE_CATEGORY, null, con);
        }
    
        //Get All Category Name
        public Cursor getInfoRecords() {
            return mDb.query(DATABASE_TABLE_CATEGORY, new String[] { "id","category" }, null, null, null, null, null);
        }
    
        //Get All todo_list Table record 
        public Cursor getInfoRecords_todo() {
            return mDb.query(DATABASE_TABLE_TODO_LIST, new String[] { "id",
                    "title", "description", "category", "due_date", "alarm_time",
                    "alarm_set", "priority", "parform" }, null, null, null, null,
                    null);
        }
    
        //Delete All todo_list Table info
        public void delall() {
            // TODO Auto-generated method stub
            mDb.delete(DATABASE_TABLE_TODO_LIST, null, null);
            Log.v("delete", DATABASE_CREATE_TODO_LIST + "all table data delete");
        }
    
        //new Record insert in todo_list table  
        public Long insert_todoinfo(String a, String b, String c, String d,
                String e, String f, String g) {
            // TODO Auto-generated method stub
            ContentValues con = new ContentValues();
            con.put("title", a);
            con.put("description", b);
            con.put("category", e);
            con.put("due_date", c);
            con.put("alarm_time", d);
            con.put("alarm_set", f);
            con.put("priority", g);
            con.put("parform", "false");
            return mDb.insert(DATABASE_TABLE_TODO_LIST, null, con);
        }
    
    
        //Delete id vs todo_list Table record 
        public void getdata_delet(int id) {
            // TODO Auto-generated method stub
             mDb.delete(DATABASE_TABLE_TODO_LIST, "id ='"+id +"'", null);
    
        }
    
    
        //Update id vs todo_list Table in CheckBox info 
        public void update_cb(int id, Boolean b) {
            // TODO Auto-generated method stub
            ContentValues con = new ContentValues();
            con.put("parform", b);
            mDb.update(DATABASE_TABLE_TODO_LIST, con, "id ='" + id + "'",null);
        }
    
        //Delete id vs category Table record 
        public void delete_category(int id) {
            // TODO Auto-generated method stub
            Log.v("id del cage",id+"");
             mDb.delete(DATABASE_TABLE_CATEGORY, "id ='"+id +"'", null);
        }
    
    
    }
    

    【讨论】:

    • 对不起,我不太清楚我到底需要用这段代码做什么。你能澄清一下吗?谢谢。
    【解决方案2】:

    如果您在 sqlite3 中运行以下命令,您应该会看到所有已删除的消息

    SELECT address, text FROM message WHERE flags = 129;
    

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 2023-03-05
      相关资源
      最近更新 更多