Android SQLite基本用法详解


当前第2页 返回上一页

写了这么多,改用用实际例子来说明上面的内容了。下面这个操作数据库的实例实现了创建数据库,创建表以及数据库的增删改查的操作。
该实例有两个类:
com.lingdududu.testSQLite 调试类
com.lingdududu.testSQLiteDb  数据库辅助类

SQLiteActivity.java

package com.lingdududu.testSQLite;
 
import com.lingdududu.testSQLiteDb.StuDBHelper;
 
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/*
* @author lingdududu
*/
public class SQLiteActivity extends Activity {
/** Called when the activity is first created. */
//声明各个按钮
private Button createBtn;
private Button insertBtn;
private Button updateBtn;
private Button queryBtn;
private Button deleteBtn;
private Button ModifyBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
 
//调用creatView方法
creatView();
//setListener方法
setListener();
}
 
//通过findViewById获得Button对象的方法
private void creatView(){
createBtn = (Button)findViewById(R.id.createDatabase);
updateBtn = (Button)findViewById(R.id.updateDatabase);
insertBtn = (Button)findViewById(R.id.insert);
ModifyBtn = (Button)findViewById(R.id.update);
queryBtn = (Button)findViewById(R.id.query);
deleteBtn = (Button)findViewById(R.id.delete);
}
 
//为按钮注册监听的方法
private void setListener(){
createBtn.setOnClickListener(new CreateListener());
updateBtn.setOnClickListener(new UpdateListener());
insertBtn.setOnClickListener(new InsertListener());
ModifyBtn.setOnClickListener(new ModifyListener());
queryBtn.setOnClickListener(new QueryListener());
deleteBtn.setOnClickListener(new DeleteListener());
}
 
//创建数据库的方法
class CreateListener implements OnClickListener{
 
@Override
public void onClick(View v) {
//创建StuDBHelper对象
StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);
//得到一个可读的SQLiteDatabase对象
SQLiteDatabase db =dbHelper.getReadableDatabase();
}
}
 
//更新数据库的方法
class UpdateListener implements OnClickListener{
 
@Override
public void onClick(View v) {
// 数据库版本的更新,由原来的1变为2
StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,2);
SQLiteDatabase db =dbHelper.getReadableDatabase();
}
}
 
//插入数据的方法
class InsertListener implements OnClickListener{
 
@Override
public void onClick(View v) {
 
StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);
//得到一个可写的数据库
SQLiteDatabase db =dbHelper.getWritableDatabase();
 
//生成ContentValues对象 //key:列名,value:想插入的值
ContentValues cv = new ContentValues();
//往ContentValues对象存放数据,键-值对模式
cv.put("id", 1);
cv.put("sname", "xiaoming");
cv.put("sage", 21);
cv.put("ssex", "male");
//调用insert方法,将数据插入数据库
db.insert("stu_table", null, cv);
//关闭数据库
db.close();
}
}
 
//查询数据的方法
class QueryListener implements OnClickListener{
 
@Override
public void onClick(View v) {
 
StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);
//得到一个可写的数据库
SQLiteDatabase db =dbHelper.getReadableDatabase();
//参数1:表名
//参数2:要想显示的列
//参数3:where子句
//参数4:where子句对应的条件值
//参数5:分组方式
//参数6:having条件
//参数7:排序方式
Cursor cursor = db.query("stu_table", new String[]{"id","sname","sage","ssex"}, "id=?", new String[]{"1"}, null, null, null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("sname"));
String age = cursor.getString(cursor.getColumnIndex("sage"));
String sex = cursor.getString(cursor.getColumnIndex("ssex"));
System.out.println("query------->" + "姓名:"+name+" "+"年龄:"+age+" "+"性别:"+sex);
}
//关闭数据库
db.close();
}
}
 
//修改数据的方法
class ModifyListener implements OnClickListener{
 
@Override
public void onClick(View v) {
 
StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);
//得到一个可写的数据库
SQLiteDatabase db =dbHelper.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("sage", "23");
//where 子句 "?"是占位符号,对应后面的"1",
String whereClause="id=?";
String [] whereArgs = {String.valueOf(1)};
//参数1 是要更新的表名
//参数2 是一个ContentValeus对象
//参数3 是where子句
db.update("stu_table", cv, whereClause, whereArgs);
}
}
 
//删除数据的方法
class DeleteListener implements OnClickListener{
 
@Override
public void onClick(View v) {
 
StuDBHelper dbHelper = new StuDBHelper(SQLiteActivity.this,"stu_db",null,1);
//得到一个可写的数据库
SQLiteDatabase db =dbHelper.getReadableDatabase();
String whereClauses = "id=?";
String [] whereArgs = {String.valueOf(2)};
//调用delete方法,删除数据
db.delete("stu_table", whereClauses, whereArgs);
}
}
}

StuDBHelper.java

package com.lingdududu.testSQLiteDb; 
   
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 
   
public class StuDBHelper extends SQLiteOpenHelper { 
   
private static final String TAG = "TestSQLite"; 
public static final int VERSION = 1; 
   
//必须要有构造函数 
public StuDBHelper(Context context, String name, CursorFactory factory, 
int version) { 
super(context, name, factory, version); 
} 
   
// 当第一次创建数据库的时候,调用该方法  
public void onCreate(SQLiteDatabase db) { 
String sql = "create table stu_table(id int,sname varchar(20),sage int,ssex varchar(10))"; 
//输出创建数据库的日志信息 
Log.i(TAG, "create Database------------->"); 
//execSQL函数用于执行SQL语句 
db.execSQL(sql); 
} 
   
//当更新数据库的时候执行该方法 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
//输出更新数据库的日志信息 
Log.i(TAG, "update Database------------->"); 
} 
}

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="创建数据库" 
/>  
<Button 
android:id="@+id/updateDatabase" 
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
android:text="更新数据库" 
/>  
<Button 
android:id="@+id/insert" 
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
android:text="插入数据" 
/> 
<Button 
android:id="@+id/update" 
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
android:text="更新数据" 
/> 
<Button 
android:id="@+id/query" 
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
android:text="查询数据" 
/> 
<Button 
android:id="@+id/delete" 
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
android:text="删除数据" 
/> 
</LinearLayout>

程序运行的效果图:

使用adb命令查看数据库:

  1. 在命令行窗口输入adb  shell回车,就进入了Linux命令行,现在就可以使用Linux的命令了。
  2. ls回车,显示所有的东西,其中有个data。
  3. cd data回车,再ls回车,cd  data回车,ls回车后就会看到很多的com................,那就是系统上的应用程序包名,找到你数据库程序的包名,然后进入。
  4. 进去后在查看所有,会看到有databases,进入databases,显示所有就会发现你的数据库名字,这里使用的是"stu_db"。
  5. sqlite3 stu_db回车就进入了你的数据库了,然后“.schema”就会看到该应用程序的所有表及建表语句。
  6. 之后就可以使用标准的SQL语句查看刚才生成的数据库及对数据执行增删改查了。

注:ls,cd等命令都是linux的基本命令,不了解的同学可以看看有关这方面的资料。

下面介绍几个在SQLite中常用到的adb命令:

查看
.database 显示数据库信息;
.tables 显示表名称;
.schema 命令可以查看创建数据表时的SQL命令;
.schema table_name 查看创建表table_name时的SQL的命令;

插入记录
insert into table_name values (field1, field2, field3...);

查询
select * from table_name;查看table_name表中所有记录;
select * from table_name where field1='xxxxx'; 查询符合指定条件的记录;

删除
drop table_name;     删除表;
drop index_name;     删除索引;
-------------------------------------------查询,插入,删除等操作数据库的语句记得不要漏了;----------------------------------------

# sqlite3 stu_db
sqlite3 stu_db
SQLite version 3.6.22
Enter  ".help" for instructions
Enter SQL statements terminated with a  ";"
sqlite> .schema
.schema
CREATE TABLE  android_metadata (locale TEXT);
CREATE TABLE stu_table(id int,sname varchar(20),sage int,ssex  varchar(10));  --->创建的表
sqlite> select * from stu_table;
select * from  stu_table;
1|xiaoming|21|male
sqlite>

插入数据

sqlite> insert into stu_table  values(2,'xiaohong',20,'female');

插入的数据记得要和表中的属性一一对应
insert into stu_table  values(2,'xiaohong',20,'female');
sqlite> select * from  stu_table;
select * from  stu_table;
1|xiaoming|21|male
2|xiaohong|20|female   --------------> 插入的数据
sqlite>

当点击修改数据的按钮时候

sqlite> select * from stu_table;
select * from  stu_table;
1|xiaoming|23|male  -------------->年龄被修改为23
2|xiaohong|20|female
sqlite>


当点击删除数据的按钮

sqlite> select * from stu_table;
select * from  stu_table;
1|xiaoming|23|male        id=2的数据已经被删除

到此这篇关于Android SQLite基本用法详解的文章就介绍到这了,更多相关Android SQLite基本用法内容请搜索


标签:SQLite

返回前面的内容

相关阅读 >>

使用 sql 语句实现一个年会抽奖程序的代码

分享php代码将360浏览器导出的favdb的Sqlite数据库文件转换为html

navicat for Sqlite导入csv中文数据的方法

Sqlite expert pro5.0如何安装可视化数据库管理软件激活教程

一些很有用的Sqlite命令总结

python编写通讯录通过数据库存储实现模糊查询功能

django基础之数据库操作方法(详解)

Sqlite 常用函数 推荐

androidstudio数据存储建立Sqlite数据库实现增删查改

android studio连接Sqlite数据库的登录注册实现

更多相关阅读请进入《Sqlite》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...