android数据存储之SQLite

SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎。它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。支持高达2TB大小的数据库,它是以单个文件形式存在,以B-Tree的数据结构形式存储在磁盘。

SQLite主要特点:

1、轻量级

SQLite和C/S模式的数据库软件不同,它是进程内的数据引擎,因此不存在数据的客户端和服务器。使用SQLitey一般只需要带上它的一个动态库,就可以享受它的全部功能,而且动态库的尺寸也是相当小。

2、独立性

SQLite数据库的核心引擎本身不依赖第三方软件,使用它也不需要安装,所以再是的时候能够省去不少麻烦。

3、隔离性

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

4、跨平台

SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统之外,很多手机系统同样可以运行,比如Android、Windows、Mobile、Symbian、Palm等。

5、多语言接口

SQLite数据库支持很多语言编程接口,比如C/C++、Java、Python、donet、Ruly、Perl等。

6、安全性

SQLite数据库通过数据库上的独立性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一个数据库读取数据,但只用一个可以写入数据。在某个进程或线程向数据库执行操作之前,必须获取得独立锁定。在发生独立锁定后,其它的读或写操作将不会发生。


下面是SQLite使用例子:

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
<!-- 标题 -->
    <EditText
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         />
<!-- 内容 -->
<EditText
        android:id="@+id/content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         />
<!-- 插入 -->
<Button 
     android:id="@+id/btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="插入"/>
<!-- 显示 -->
<ListView 
    android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"/>
</LinearLayout>


代码:

package tjuci.edu.dl;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class SQLiteSampleActivity extends Activity
{
	EditText title, content;
	ListView listView;
	Button btn;
	SQLiteDatabase db = null;

	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		title = (EditText) findViewById(R.id.title);
		content = (EditText) findViewById(R.id.content);
		listView = (ListView) findViewById(R.id.listView);
		btn = (Button) findViewById(R.id.btn);
		//创建数据库并为数据库命名
		db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()
				+ "/my.db3", null);
		btn.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v)
			{
				try
				{
					insertData(db, title.getText().toString(), content
							.getText().toString());
					Cursor cursor = db.rawQuery("select * from mydb", null);// 查询的结果集
																			// ---类似ResultSet
					inflateCursor(cursor);
				} catch (Exception e)
				{
					//创建表
					db.execSQL("create table mydb(_id integer primary key autoincrement,title varchar(255),content varchar(255))");
					//插入数据
					insertData(db, title.getText().toString(), content
							.getText().toString());
					Cursor cursor = db.rawQuery("select * from mydb", null);// 查询的结果集
																			// ---类似ResultSet
					inflateCursor(cursor);
				}
			}
		});
	}

	/**
	 * 插入数据
	 * @param db
	 * @param title
	 * @param content
	 */
	public void insertData(SQLiteDatabase db, String title, String content)
	{
		db.execSQL("insert into mydb(_id,title,content) values(null,?,?)",
				new String[] { title, content });
	}

	public void inflateCursor(Cursor cursor)
	{
		//创建适配器对象显示数据
		SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.line,
				cursor, new String[] { "title", "content" }, new int[] {
						R.id.tv1, R.id.tv2 });
		listView.setAdapter(sca);
	}

	@Override
	protected void onDestroy()
	{
		super.onDestroy();
		//当退出时关闭数据库
		if (db != null && db.isOpen())
		{
			db.close();
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值