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