什么是建立在Android的sqlite的连接的最佳方式? [英] What is the best way to establish sqlite connection in android?

查看:115
本文介绍了什么是建立在Android的sqlite的连接的最佳方式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经看到了很多相关的sqlite的连接示例。但没有任何适当的code我也还是发现了。请人描述了所有的可能性,一步一步的sqlite的连接过程?


解决方案

  1. 首先,你需要创建一个数据库。
    您可以通过创建一个扩展SQLiteOpenHelper一个DatabaseHelper类做到这一点。
    覆盖的onCreate()和onUpgrade()方法:

     公共类DatabaseHelper扩展SQLiteOpenHelper {    公共DatabaseHelper(上下文的背景下){
            超(背景下,Config.DATABASE_NAME,空,Config.DATABASE_VERSION);
        }    @覆盖
        公共无效的onCreate(SQLiteDatabase DB){
            MyTable.onCreate(DB);
        }    @覆盖
        公共无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
            MyTable.onUpgrade(DB,oldVersion,静态网页);
        }
    }


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

<醇开始=2>
  • 创建MyTable的类。

     公共类MyTable的{    //数据库中的表
        公共静态最后弦乐TABLE_NAME =mytable的;    //创建语句
        私有静态最后弦乐SQL_CREATE_MY_TABLE =
            CREATE TABLE+ TABLE_NAME +(+ MyTableContract.SQL_CREATE_COLUMN_CLAUSE +);;
        公共静态无效的onCreate(SQLiteDatabase DB){
             db.execSQL(SQL_CREATE_MY_TABLE);
        }    公共静态无效onUpgrade(SQLiteDatabase分贝,INT oldVersion,诠释静态网页){
            db.execSQL(DROP TABLE IF EXISTS+ TABLE_NAME);
            的onCreate(DB);
        }
    }


  • 在这里,您创建表和升级。创建仅委派给一个合同类。这是一个很好的做法,以提取所有列的活动变成合同类。升级,在大多数情况下,它的确定删除并重新创建该表,除非你想preserve一些数据,如登录。

    <醇开始=3>
  • 创建表合同。

     公共类MyTableContract {// 列
    公共静态最后弦乐COLUMN_ID =_id;
    公共静态最后弦乐COLUMN_NAME =名;
    公共静态最后弦乐COLUMN_AGE =年龄;
    //创建条款
    公共静态最后弦乐SQL_CREATE_COLUMN_CLAUSE =
        COLUMN_ID +INTEGER PRIMARY KEY AUTOINCREMENT,+
        COLUMN_NAME +TEXT+
        COLUMN_AGE +INTEGER//查询投影
    公共静态最后的String [] = QUERY_PROJECTION
    {
        COLUMN_ID,
        COLUMN_NAME,
        COLUMN_AGE
    };//选择条款 - 返回所有行
    公共静态最后弦乐SELECTION_CLAUSE = NULL;//选择论
    公共静态最后的String [] SELECTION_ARGS = NULL;//使用默认的排序顺序
    公共静态最后弦乐QUERY_SORT_ORDER = NULL;
    }


  • 这是您指定要创建的列和列在查询数据库要返回。

    <醇开始=4>
  • 插入/查询。
    那么无论你要插入/查询数据库,你可以这样做:

      //创建一个数据库助手
    私人DatabaseHelper mDbHelper =新DatabaseHelper(的getContext());//获取写入数据库中插入
    SQLiteDatabase分贝= mDbHelper.getWritableDatabase();
    ContentValues​​值=新ContentValues​​();
    values​​.put(MyTableContract.COLUMN_NAME,爱德华);
    values​​.put(MyTableContract.COLUMN_AGE,32);
    长insertId = database.insert(MyTable.TABLE_NAME,空,价值);//获取读取数据库查询
    SQLiteDatabase分贝= mDbHelper.getReadableDatabase();
    光标光标= database.query(MyTable.TABLE_NAME,MyTableContract.QUERY_PROJECTION,MyTableContract.COLUMN_AGE += 32,NULL,NULL,NULL,NULL);
    cursor.moveToFirst();
    串nameReturned = cursor.getString(0);
    cursor.close();


  • I have seen lots of examples related sqlite connection. But there is no any proper code I have still found. Anyone please describe step by step sqlite connection process with all possibilities ?

    解决方案

    1. First, you need to create a database. You do this by creating a DatabaseHelper class that extends SQLiteOpenHelper. Override the onCreate() and onUpgrade() methods:

      public class DatabaseHelper extends SQLiteOpenHelper {
      
          public DatabaseHelper(Context context) {
              super(context, Config.DATABASE_NAME, null, Config.DATABASE_VERSION);
          }
      
          @Override
          public void onCreate(SQLiteDatabase db) {
              MyTable.onCreate(db);
          }
      
          @Override
          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
              MyTable.onUpgrade(db, oldVersion, newVersion);
          }
      }
      

    When your app starts for the first time, Android OS will call your onCreate() method to create the database and your table.

    1. Create MyTable class.

      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);
          }
      }
      

    Here you create the table and upgrade it. Create just delegates to a Contract class. It's a good practice to extract all column activity into a Contract class. Upgrade, in most cases it's ok to drop and re-create the table, unless you want to preserve some data like Login.

    1. Create your Table Contract.

      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;
      }
      

    This is where you specify which columns you want created and which columns you want returned when you query the database.

    1. Insert / Query. Then wherever you want to insert/query the database, you can do this:

      // 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();
      

    这篇关于什么是建立在Android的sqlite的连接的最佳方式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆