Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中建立sqlite连接的最佳方式是什么?_Android_Sqlite - Fatal编程技术网

在android中建立sqlite连接的最佳方式是什么?

在android中建立sqlite连接的最佳方式是什么?,android,sqlite,Android,Sqlite,我见过很多与sqlite连接相关的例子。但是我还没有找到任何合适的代码。任何人请描述一步一步sqlite连接过程的所有可能性 首先,您需要创建一个数据库。 可以通过创建扩展SQLiteOpenHelper的DatabaseHelper类来实现这一点。 重写onCreate()和onUpgrade()方法: 当你的应用程序第一次启动时,Android操作系统将调用你的onCreate()方法来创建数据库和表 创建MyTable类 public class MyTable { // Da

我见过很多与sqlite连接相关的例子。但是我还没有找到任何合适的代码。任何人请描述一步一步sqlite连接过程的所有可能性

  • 首先,您需要创建一个数据库。 可以通过创建扩展SQLiteOpenHelper的DatabaseHelper类来实现这一点。 重写onCreate()和onUpgrade()方法:

  • 当你的应用程序第一次启动时,Android操作系统将调用你的onCreate()方法来创建数据库和表

  • 创建MyTable类

    public class MyTable {
    
        // Database table
        public static final String TABLE_NAME = "mytable";
    
        // Create statement
        private static final String SQL_CREATE_MY_TABLE = 
            "CREATE TABLE " + TABLE_NAME + "(" + MyTableContract.SQL_CREATE_COLUMN_CLAUSE + ");";
    
    
        public static void onCreate(SQLiteDatabase db) {
             db.execSQL(SQL_CREATE_MY_TABLE);
        }
    
        public static void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
            onCreate(db);
        }
    }
    
  • 在这里,您可以创建表并对其进行升级。仅创建合同类的委托。将所有列活动提取到合同类中是一个很好的做法。升级,在大多数情况下可以删除并重新创建表,除非您想保留一些数据,如登录

  • 创建表格合同

    public class MyTableContract {
    
    // COLUMNS
    public static final String COLUMN_ID    = "_id";
    public static final String COLUMN_NAME  = "name";
    public static final String COLUMN_AGE   = "age";
    
    
    // Create clause
    public static final String SQL_CREATE_COLUMN_CLAUSE = 
        COLUMN_ID       + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        COLUMN_NAME     + " TEXT, " +
        COLUMN_AGE      + " INTEGER";
    
    // Query projection
    public static final String[] QUERY_PROJECTION =
    {
        COLUMN_ID,
        COLUMN_NAME,
        COLUMN_AGE
    };
    
    // Selection clause - return all rows
    public static final String SELECTION_CLAUSE = null;
    
    // Selection arguments
    public static final String[] SELECTION_ARGS = null;
    
    // Use default sort order
    public static final String QUERY_SORT_ORDER = null;
    }
    
  • 在这里,您可以指定在查询数据库时要创建哪些列以及要返回哪些列

  • 插入/查询。 然后,无论您想在何处插入/查询数据库,都可以执行以下操作:

    // Create a Database Helper
    private DatabaseHelper mDbHelper = new DatabaseHelper(getContext());
    
    // Get the writable database to Insert
    SQLiteDatabase db = mDbHelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(MyTableContract.COLUMN_NAME, "eduard");
    values.put(MyTableContract.COLUMN_AGE,   32);
    long insertId = database.insert(MyTable.TABLE_NAME, null, values);
    
    // Get the readable database to Query
    SQLiteDatabase db = mDbHelper.getReadableDatabase();
    Cursor cursor = database.query(MyTable.TABLE_NAME, MyTableContract.QUERY_PROJECTION, MyTableContract.COLUMN_AGE + " = 32", null, null, null, null);
    cursor.moveToFirst();
    String nameReturned = cursor.getString(0);
    cursor.close();
    

  • 尝试创建两个不同的文件,一个用于数据库处理程序,另一个用于简单地编写查询。在数据库处理程序中,将其扩展到SQLiteOpenhelper并实现方法。在oncreate()中方法根据需要创建数据库,并在查询文件中根据需要创建方法,在方法中编写查询并在活动中调用它们的对象

     public class Database_Helper {
       private Context context;
    public static String DB_name = "demo.sqlite";
    Demo_DBHelper dh;
    SQLiteDatabase sdb;
    
    private static class Demo_DBHelper extends SQLiteOpenHelper {
    
        public Demo_DBHelper(Context context) {
    
            super(context, DB_name, null, 1);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            System.out.println("On Create Called");
            db.execSQL("Create TABLE IF NOT EXISTS Contact_Detail(mid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR,phonenumber VARCHAR)");
    
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
    
            db.execSQL("DROP TABLE IF EXISTS Contact_Detail");
    
            // db.execSQL("DROP TABLE IF EXISTS CommunityDetails");
        }
    
    }
    
    public Database_Helper(Context c) {
        context = c;
    }
    
    public Database_Helper Open() throws SQLiteException {
        dh = new Demo_DBHelper(context);
        sdb = dh.getWritableDatabase();
        return this;
    }
    
    public void close() {
        dh.close();
    }
    
    public void clearData() {
        sdb.execSQL("DROP TABLE IF EXISTS Contact_Detail");
    
    }
    
    public Cursor getContactDetail() {
    
        String st = "SELECT * from Contact_Detail";
    
        Cursor rs_message = sdb.rawQuery(st, null);
        return rs_message;
    
    }
    
    public void add_contact(String name, String phonenumber) {
    
        ContentValues cv = new ContentValues();
        cv.put("name", name);
        cv.put("phonenumber", phonenumber);
        sdb.insert("Contact_Detail", null, cv);
    
    }
    
    public void removephone(int phonenumber) {
    
        String str = "SELECT * FROM Contact_Detail where phonenumber='"
                + phonenumber + "' ";
        Cursor rs_message = sdb.rawQuery(str, null);
        if (rs_message.moveToFirst()) {
    
            String st = "DELETE FROM Contact_Detail where phonenumber='"
                    + phonenumber + "' ";
            sdb.execSQL(st);
        }
    
    }
    
    public void update_contactdetail(String phonenumber, String name) {
    
        ContentValues cv = new ContentValues();
        cv.put("name", "" + name);
    
        sdb.update("Contact_Detail", cv, "phonenumber=?",
                new String[] { phonenumber });
    
    }
    
    }

     public class Database_Helper {
       private Context context;
    public static String DB_name = "demo.sqlite";
    Demo_DBHelper dh;
    SQLiteDatabase sdb;
    
    private static class Demo_DBHelper extends SQLiteOpenHelper {
    
        public Demo_DBHelper(Context context) {
    
            super(context, DB_name, null, 1);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            System.out.println("On Create Called");
            db.execSQL("Create TABLE IF NOT EXISTS Contact_Detail(mid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR,phonenumber VARCHAR)");
    
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
    
            db.execSQL("DROP TABLE IF EXISTS Contact_Detail");
    
            // db.execSQL("DROP TABLE IF EXISTS CommunityDetails");
        }
    
    }
    
    public Database_Helper(Context c) {
        context = c;
    }
    
    public Database_Helper Open() throws SQLiteException {
        dh = new Demo_DBHelper(context);
        sdb = dh.getWritableDatabase();
        return this;
    }
    
    public void close() {
        dh.close();
    }
    
    public void clearData() {
        sdb.execSQL("DROP TABLE IF EXISTS Contact_Detail");
    
    }
    
    public Cursor getContactDetail() {
    
        String st = "SELECT * from Contact_Detail";
    
        Cursor rs_message = sdb.rawQuery(st, null);
        return rs_message;
    
    }
    
    public void add_contact(String name, String phonenumber) {
    
        ContentValues cv = new ContentValues();
        cv.put("name", name);
        cv.put("phonenumber", phonenumber);
        sdb.insert("Contact_Detail", null, cv);
    
    }
    
    public void removephone(int phonenumber) {
    
        String str = "SELECT * FROM Contact_Detail where phonenumber='"
                + phonenumber + "' ";
        Cursor rs_message = sdb.rawQuery(str, null);
        if (rs_message.moveToFirst()) {
    
            String st = "DELETE FROM Contact_Detail where phonenumber='"
                    + phonenumber + "' ";
            sdb.execSQL(st);
        }
    
    }
    
    public void update_contactdetail(String phonenumber, String name) {
    
        ContentValues cv = new ContentValues();
        cv.put("name", "" + name);
    
        sdb.update("Contact_Detail", cv, "phonenumber=?",
                new String[] { phonenumber });
    
    }
    
    public class DBAdapter {
        //User Master
        public static final String KEY_ROWID = "id";
        public static final String KEY_Email = "email";
        public static final String KEY_PASS = "pass";
    
    
    
        private static final String DATABASE_NAME = "TEST_DB";
        private static final int DATABASE_VIRSION = 1;
    
        private static final String DATABASE_CREATE = "create table User_Mst(id integer primary key,email text,pass text);";
    
        private Context context = null;
        private DatabaseHelper DBHelper;
        private SQLiteDatabase db;
    
        public DBAdapter(Context con) {
        this.context = con;
        DBHelper = new DatabaseHelper(context);
        }
        private class DatabaseHelper extends SQLiteOpenHelper {
    
        DatabaseHelper(Context context) {
        // TODO Auto-generated constructor stub
        super(context, DATABASE_NAME, null, DATABASE_VIRSION);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        try {
        db.execSQL(DATABASE_CREATE);
    
    
        } catch (SQLException e) {
        e.printStackTrace();
        }
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
    
        db.execSQL("DROP TABLE IF EXISTS User_Mst");
    
    
    
        onCreate(db);
        }
        }
    
        public DBAdapter open() throws SQLException {
        db = DBHelper.getWritableDatabase();
        return this;
        }
        public void close() {
        DBHelper.close();
        }
        public long insertuser(int i,String mail,String pass) {
    
        ContentValues init = new ContentValues();
        init.put(KEY_ROWID, i);
        init.put(KEY_Email, mail);
        init.put(KEY_PASS, pass);
        return db.insert("User_Mst", null, init);
        }
    
    
    
    
        public boolean deleteUser(long rowid) {
        return db.delete("User_Mst", KEY_ROWID + "=" + rowid, null) > 0;
        }
    
    
    
        public Cursor getuser() {
        return db.query("User_Mst", new String[] { KEY_ROWID,KEY_Email,
        KEY_PASS }, null, null, null, null, null);
        }
    
    
    
    
    
        public Cursor getUser(long rowid) throws SQLException {
        Cursor mycursor = db.query(true, "User_Mst", new String[] { KEY_ROWID,KEY_Email,KEY_PASS },
        KEY_ROWID + "=" + rowid, null, null,    null, null, null);
        if (mycursor != null) {
        mycursor.moveToFirst();
        }
        return mycursor;
        }
    
        public boolean updateuser(long rowid,String mail,String pass) {
        ContentValues args = new ContentValues();
        args.put(KEY_Email, mail);
        args.put(KEY_PASS,pass);
        return db.update("User_Mst", args, KEY_ROWID + "=" + rowid, null) > 0;
        }
    
        }