android sqlite怎么读取数据库

android sqlite怎么读取数据库,第1张

第一步先判断在指定的路劲是否存在,不存在就创建。第二步将android的资源下的数据库复制到指定路径下面。第三步就是根据指定路径打开或者创建数据库,然后得到 *** 作数据库的对象,得到 *** 作数据库的对象了,自然就可以对数据库中的表进行增删改查等 *** 作了。

[java] view plain copy print?

<span style="font-size:12px">SQLiteDatabase db

private final String DATABASE_PATH = android.os.Environment

.getExternalStorageDirectory().getAbsolutePath() + "/vote"

private String DATABASE_FILENAME = "db_vote.db"

// 初始化数据库

private SQLiteDatabase openDatabase() {

try {

String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME

File dir = new File(DATABASE_PATH)

if (!dir.exists())

dir.mkdir()

if (!(new File(databaseFilename)).exists()) {

InputStream is = getResources().openRawResource(R.raw.db_vote)

FileOutputStream fos = new FileOutputStream(databaseFilename)

byte[] buffer = new byte[8192]

int count = 0

while ((count = is.read(buffer)) >0) {

fos.write(buffer, 0, count)

}

fos.close()

is.close()

}

db = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null)

return db

} catch (Exception e) {

e.printStackTrace()

}

return null

}</span>

方法二:

1. 准备SQLite database文件

假设你已经创建了一个sqlite数据库,我们需要对其进行一些修改。

(译者注:这里原文是推荐了一个SQLite数据库管理软件,这个我觉得可以随自己的喜好,最Windows下面有多款可视化的SQlite数据库管理软件,可以方便的读取,编辑数据库,例如我用的是sqlitestudio

打开数据库,添加一个新的table “android_metadata",插入一行数据,具体的SQL如下:

SQL COUNT() 语法

SQL COUNT(column_name) 语法

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_name

SQL COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name

SQL COUNT(DISTINCT column_name) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name

注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

SQL COUNT(column_name) 实例

我们拥有下列 "Orders" 表:

O_Id

OrderDate

OrderPrice

Customer

12008/12/291000Bush

22008/11/231600Carter

32008/10/05700Bush

42008/09/28300Bush

52008/08/062000Adams

62008/07/21100Carter

现在,我们希望计算客户 "Carter" 的订单数。

我们使用如下 SQL 语句:

SELECT COUNT(Customer) AS CustomerNilsen FROM Orders

WHERE Customer='Carter'

以上 SQL 语句的结果是 2,因为客户 Carter 共有 2 个订单:

CustomerNilsen

2

SQL COUNT(*) 实例

如果我们省略 WHERE 子句,比如这样:

SELECT COUNT(*) AS NumberOfOrders FROM Orders

结果集类似这样:

NumberOfOrders

6

这是表中的总行数。

SQL COUNT(DISTINCT column_name) 实例

现在,我们希望计算 "Orders" 表中不同客户的数目。

我们使用如下 SQL 语句:

SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders

结果集类似这样:

NumberOfCustomers

3

这是 "Orders" 表中不同客户(Bush, Carter 和 Adams)的数目。

1、使用insert方法插入记录

SQLiteDatabase的insert方法的签名为long

insert(String

table,String

nullColumnHack,ContentValues

values),这个插入方法的参数说明如下:

table:代表想插入数据的表名。

nullColumnHack:代表强行插入null值的数据列的列名。

values:代表一行记录的数据。

insert方法插入的一行记录使用ContentValues存放,ContentValues类似于Map,它提供了put(String

key,Xxx

value)(其中key为数据列的列名)方法用于存入数据、getAsXxx(String

key)方法用于取出数据。

例如如下语句:

ContentValues

values=new

ContentValues()

values.put("name","孙悟空"):

values.put("age",500)

//返回新添记录的行号,该行号是一个内部直,与主键id无关,发生错误返回-1

long

rowid=db.insert("person_inf",null,values)

2、使用update方法更新数据

SQLiteDatabase的update方法签名为update(String

table,ContentValues

values,String

whereClause,String[]

whereArgs),这个更新方法的参数说明如下:

table:代表想要更新数据的表名。

values:代表想要更新的数据。

whereClause:满足该whereClause子句的记录将会被更新。

whereArgs:用于为whereArgs子句传递参数。

例如我们想要更新person_inf表中所有主键大于20的人的人名,可调用如下方法:

ContentValues

values=new

ContentValues()

//存放更新后的人名

values.put("name","新人名")

int

result=db.update("person_inf",values,"_id>?",new

Integer[]{20})

3、使用delete方法删除记录

SQLiteDatabase的delete方法签名为delete(String

table,String

whereClause,String[]

whereArgs),这个删除的参数说明如下:

table:代表想删除数据的表名。

whereClause:满足该whereClause子句的记录将会被删除。

whereArgs:用于为whereArgs子句传入参数。

删除person_inf表中所有人名以孙开头的记录

int

result=db.delete("person_inf","person_name

like

?",new

String[]{"孙_"})

4、使用query方法查询记录

SQLiteDatabase的query方法签名为Cursor

query(boolean

distinct,String

table,String[]

columns,String

selection,String[]

selectionArgs,String

groupBy,String

having,String

orderBy,String

limit),这个query方法的参数说明如下。

distinct:指定是否去除重复记录。

table:执行查询数据的表名。

columns:要查询出来的列名。

selection:查询条件子句。

selectionArgs:用于为selection子句中占位符传入参数值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。

groupBy:用于控制分组。

having:用于对分组进行过滤。

orderBy:用于对记录进行排序。

limit:用于进行分页。

例如查询出person_inf表中人名以孙开头的数据

Cursor

cursor=db.query("person_inf",new

String[]{"_id,name,age"},"name

like

?",new

String

[]{"孙%"},null,null,"personid

desc","5,10")

cursor.close()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10714888.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存