什么是建立在Android的sqlite的连接的最佳方式? [英] What is the best way to establish sqlite connection in android?
问题描述
我已经看到了很多相关的sqlite的连接示例。但没有任何适当的code我也还是发现了。请人描述了所有的可能性,一步一步的sqlite的连接过程?
-
首先,你需要创建一个数据库。
您可以通过创建一个扩展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 ?
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.
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.
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.
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屋!