当前位置: 代码迷 >> SQL >> 【Android学习】Android数据的四种存储方式(3)-SQLite
  详细解决方案

【Android学习】Android数据的四种存储方式(3)-SQLite

热度:31   发布时间:2016-05-05 11:37:14.0
【Android学习】Android数据的四种储存方式(3)--SQLite

SQLite简介:

Google为Android的较大的数据处理提供了SQLite,其在数据储存、管理、维护等各方面都相当出色,功能也非常强大。SQLite具备以下特点:

1.轻量级

使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。

2.独立性

SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。

3.隔离性

SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。

4.跨平台

SQLite 目前支持大部分操作系统,不需要电脑操作系统更在众多的手机系统也是能够运行,比如:Android。

5.多语言接口

SQLite 数据库支持多语言编程接口。

6.安全性

SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。


下面是一个利用创建SQLite数据库,并提供添加数据,更新数据,查询数据功能,截图如下:


具体代码如下:

main.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><TextView      android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/hello"    /><Button	android:id="@+id/createDatabase"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="createDatabase"    />    <Button	android:id="@+id/updateDatabase"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="updateDatabase"    /><Button	android:id="@+id/insert"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="insert"/><Button	android:id="@+id/update"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="update"/><Button	android:id="@+id/query"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="query"/>	</LinearLayout>

DatabaseHelper.java:

//DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能,//第一,getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatabse对象,通过该对象可以对数据库进行操作//第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作public class DatabaseHelper extends SQLiteOpenHelper {		private static final int VERSION = 1;	//在SQLiteOepnHelper的子类当中,必须有该构造函数	public DatabaseHelper(Context context, String name, CursorFactory factory,			int version) {		//必须通过super调用父类当中的构造函数		super(context, name, factory, version);		// TODO Auto-generated constructor stub	}	public DatabaseHelper(Context context,String name){		this(context,name,VERSION);	}	public DatabaseHelper(Context context,String name,int version){		this(context, name,null,version);	}	//该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法	@Override	public void onCreate(SQLiteDatabase db) {		// TODO Auto-generated method stub		System.out.println("create a Database");		//execSQL函数用于执行SQL语句		db.execSQL("create table user(id int,name varchar(20))");	}	@Override	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {		// TODO Auto-generated method stub		System.out.println("update a Database");	}}

SQLiteActivity.java:

public class SQLiteActivity extends Activity {    /** Called when the activity is first created. */	private Button createButton;	private Button insertButton;	private Button updateButton;	private Button updateRecordButton;	private Button queryButton;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        createButton = (Button)findViewById(R.id.createDatabase);        updateButton = (Button)findViewById(R.id.updateDatabase);        insertButton = (Button)findViewById(R.id.insert);        updateRecordButton = (Button)findViewById(R.id.update);        queryButton = (Button)findViewById(R.id.query);        createButton.setOnClickListener(new CreateListener());        updateButton.setOnClickListener(new UpdateListener());        insertButton.setOnClickListener(new InsertListener());        updateRecordButton.setOnClickListener(new UpdateRecordListener());        queryButton.setOnClickListener(new QueryListener());    }    class CreateListener implements OnClickListener{		@Override		public void onClick(View v) {			//创建一个DatabaseHelper对象			DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");			//只有调用了DatabaseHelper对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才会创建,或打开一个数据库			SQLiteDatabase db = dbHelper.getReadableDatabase();		}    }    class UpdateListener implements OnClickListener{		@Override		public void onClick(View v) {			DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);			SQLiteDatabase db = dbHelper.getReadableDatabase();		}    	    }    class InsertListener implements OnClickListener{		@Override		public void onClick(View v) {			//生成ContentValues对象			ContentValues values = new ContentValues();			//想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致			values.put("id", 1);			values.put("name","zhangsan");			DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);			SQLiteDatabase db = dbHelper.getWritableDatabase();			//调用insert方法,就可以将数据插入到数据库当中			db.insert("user", null, values);		}    }    //更新操作就相当于执行SQL语句当中的update语句    //UPDATE table_name SET XXCOL=XXX WHERE XXCOL=XX...    class UpdateRecordListener implements OnClickListener{		@Override		public void onClick(View arg0) {			// TODO Auto-generated method stub			//得到一个可写的SQLiteDatabase对象			DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");			SQLiteDatabase db = dbHelper.getWritableDatabase();			ContentValues values = new ContentValues();			values.put("name", "zhangsanfeng");			//第一个参数是要更新的表名			//第二个参数是一个ContentValeus对象			//第三个参数是where子句			db.update("user", values, "id=?", new String[]{"1"});		}    }    class QueryListener implements OnClickListener{		@Override		public void onClick(View v) {			System.out.println("aaa------------------");			Log.d("myDebug", "myFirstDebugMsg");						DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");			SQLiteDatabase db = dbHelper.getReadableDatabase();			Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);			while(cursor.moveToNext()){				String name = cursor.getString(cursor.getColumnIndex("name"));				System.out.println("query--->" + name);			}		}    }    }


  相关解决方案