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