VC 读取SQLite数据库中的表的数据,该怎么解决

如题所述

第1个回答  2020-03-12
先用sqlite3_open打开数据库,得到一个struct
sqlite3的指针,例如
1
2
struct
sqlite3
*db
=
NULL;
sqlite3_open("数据库地址"
,&db);
然后
1
2
3
4
5
6
7
8
9
10
11
12
13
char
*szError
=
NULL,**dbResult;
int
row,col;
int
result
=
sqlite3_get_table(
db,"SELECT
name
FROM
sqlite_master
WHERE
type='table'
ORDER
BY
name",&dbResult,&row,&col,&szError
);
if(
result
==
SQLITE_OK
)
{
//dbResult就是查询结果,row和col分别是返回结果集的行数(包含表头)和列数
sqlite3_free_table(dbResult);
}
else
{
//szError是错误描述信息
sqlite3_free(szError);
}
第2个回答  2020-03-04
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();
相似回答