基础篇1.7 sqlite
一、sqlite简介
1、 英文官网:http://www.sqlite.org/,中文社区:http://www.sqlite.com.cn/
2、 Android 下的sqlite不需要身份验证,可以直接建立连接,且属于单文件数据库。
3、 只需获得sqliteDatabase对象后,就可以通过其方法对数据进行操作,如execsql等。
二、使用adb访问sqlite
1、 进入到adb.exe所在的目录,输入adb shell,可以进入android的shell窗口中
2、 进入到shell界面后,此界面下的操作和linux操作类似,可以使用Linux的常用命令,如ll、ls、cd等。系统自带的一些程序,以及自己开发的一些程序在/data/data目录下,如图:
3、 查看数据库和表结构命令:sqlite3mydb3(mydb3为数据库的名字)可以进入到mydb3这个数据库中,.schema命令可以查看表结构。
4、 查看表中的字段信息。
三、sqlite的增、删、改、查
1、例子界面:
2、layout配置文件:
<TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
tools:context=".MainActivity">
<TableRow>
<Button
android:id="@+id/open"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="创建或者打开数据库"/>
<Button
android:id="@+id/close"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
</TableRow>
<TableRow>
<Button
android:id="@+id/add"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="新增"/>
<Button
android:id="@+id/modify"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="修改"/>
</TableRow>
<TableRow>
<Button
android:id="@+id/query"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="查询"/>
<Button
android:id="@+id/del"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="删除"/>
</TableRow>
<TableRow>
<TextView
android:id="@+id/myTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
</TableRow>
</TableLayout>
4、 源代码:
packagecom.solidwang.sqllite;
importandroid.app.Activity;
importandroid.database.Cursor;
importandroid.database.sqlite.sqliteDatabase;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.TextView;
importandroid.widget.Toast;
publicclass MainActivity extends Activity {
private sqliteDatabase sld;
private Button open,close,add,modify,query,del;
private TextView textView;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
open = (Button)findViewById(R.id.open);
close = (Button)findViewById(R.id.close);
add = (Button)findViewById(R.id.add);
modify = (Button)findViewById(R.id.modify);
query = (Button)findViewById(R.id.query);
del = (Button)findViewById(R.id.del);
open.setOnClickListener(newOpenListener());
close.setOnClickListener(newCloseListener());
add.setOnClickListener(newAddListener());
query.setOnClickListener(newQueryListener());
del.setOnClickListener(newDelListener());
modify.setOnClickListener(newModifyListener());
}
class OpenListener implements OnClickListener {
@Override
public void onClick(View v) {
//创建或者打开数据库
createOrOpenDatabase();
}
}
class CloseListener implements OnClickListener{
@Override
public void onClick(View v) {
closeDatabase();
}
}
class AddListener implements OnClickListener {
@Override
public void onClick(View v) {
//插入数据
insert();
}
}
class QueryListener implements OnClickListener{
@Override
public void onClick(View v) {
//查询数据
query();
}
}
class DelListener implements OnClickListener {
@Override
public void onClick(View v) {
//删除数据
del();
}
}
class ModifyListener implements OnClickListener{
@Override
public void onClick(View v) {
modify();
}
}
private void createOrOpenDatabase() {
try {
sld =sqliteDatabase.openDatabase("/data/data/com.solidwang.sqllite/mydb3",null,sqliteDatabase.OPEN_READWRITE|sqliteDatabase.CREATE_IF_NECESSARY);
System.out.println("sld="+ sld);
setText("打开数据库");
String sql = "createtable if not exists students(sname varchar(20),sphone varchar(20));";
} catch (Exception e) {
Toast.makeText(MainActivity.this,"创建数据库失败",Toast.LENGTH_LONG).show();
}
}
private void closeDatabase() {
sld.close();
}
private void insert() {
createOrOpenDatabase();
String sql = "insert intostudents values('solidwang','123456');";
setText("创建一条记录");
}
private void query() {
createOrOpenDatabase();
String sql = "select sname,sphone from students";
Cursor cursor = sld.rawQuery(sql,newString[]{});
String rs = "";
while(cursor.moveToNext()) {
rs = rs + cursor.getString(0)+ " " + cursor.getString(1);
}
setText(rs);
}
private void del() {
createOrOpenDatabase();
String sql = "delete fromstudents";
setText("清空所有数据");
}
private void modify() {
createOrOpenDatabase();
String sql = "update studentsset sphone='2595411' where sname='solidwang'";
setText("修改成功");
}
private void setText(String text) {
textView = (TextView)findViewById(R.id.myTextView);
textView.setText(text);
}
}