VC 读取SQLite数据库中的表的数据,该怎么解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC 读取SQLite数据库中的表的数据,该怎么解决相关的知识,希望对你有一定的参考价值。
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(); 参考技术A 先用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);
如何获取数据库中的表信息(SQLite)[重复]
【中文标题】如何获取数据库中的表信息(SQLite)[重复]【英文标题】:How to get table information in a database (SQLite) [duplicate] 【发布时间】:2016-04-18 21:04:56 【问题描述】:我是 SQLite 的新手。我在 Eclipse(Java) 中使用它以防万一。
现在我的问题是我有一个 *.db 文件,但对其内容一无所知。我想知道我可以通过哪种方式获得有关里面表格的一些信息。否则,似乎不可能通过SELECT
Query 正确读取数据库。所以基本上我的问题只是这部分
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery( "SELECT * FROM ???????;" );
while ( rs.next() )
int id = rs.getInt("id");
..
【问题讨论】:
【参考方案1】:1。了解数据库的架构
在 .db 文件所在的位置打开终端。
输入以下命令启动 SQLite 控制台。
sqlite3 NameOfDatabase.db
1.1 所有表格
然后给控制台输入以下命令:
.schema
这将为您提供有关所有表的所有信息,包括字段的数据类型。换句话说,上面的命令会给你,你的database schema
。
上述命令的输出示例如下:
CREATE TABLE log (ID INTEGER PRIMARY KEY AUTOINCREMENT, userID INTEGER, cardID INTEGER, eventID INTEGER, nameOnTicket TEXT, pricePaid REAL);
CREATE TABLE card (cardID INTEGER PRIMARY KEY AUTOINCREMENT, cardNum TEXT, securityCode TEXT, expiryMonth INTEGER, expiryYear INTEGER, addressID INTEGER, userID INTEGER);
它实际上返回了重新创建表的命令,因此如果您想输出 queries
以重新创建表或为您的数据库/应用程序创建文档,这也很方便,但也可以了解数据库的结构和表。
1.2 具体表
此外,您可以使用以下命令查看特定表的架构:
.schema TableName
这将返回TableName
表的架构。
2。将 SQLite 与 Eclipse 集成
另一种选择是将您的 SQLite 数据库与 Eclipse 集成,您可以在下面找到执行此操作的步骤。以下步骤已从官方 Eclipse wiki 复制到此处,您可以找到 here。
1) 从here 下载 SQLite 驱动程序。实际的 zip 文件 司机在3。在本地某处展开 zip 并注意 位置。
2) 将 zip 中的 sqlite_jni.dll 放入 JRE 的 bin 目录中。 驱动程序要求此文件位于 java 库路径中。
3) 在安装了 DTP 1.0 的 Eclipse 中(最好是最终版本或 每晚构建日期为 110806 或更高版本),转到首选项 (Window->Preferences) 并选择 Connectivity->Driver Definitions 页面。
4) 在可用驱动程序中选择“通用 JDBC”类别 定义树,然后单击“添加...”。
5) 在Available中选择“Generic JDBC Driver->Generic JDBC Driver” 驱动程序模板树。将新的通用 JDBC 驱动程序命名为 “javasqlite JDBC 驱动程序”。点击确定。
6) 单击“添加 Jar/Zip”并从驱动程序 zip 中选择 sqlite.jar 您在第 1 步中展开。单击“打开”。
7) 在属性表中,选择驱动程序类属性并单击 按钮。如果 jar 可访问,您将看到一个对话框 在列表中至少出现一个类。选择 “SQLite.JDBCDriver”。点击确定。
8) 同样在“属性”表中,选择驱动程序 URL 属性并 键入以下内容:jdbc:sqlite:/DRIVE:/dirA/dirB/dbfile
9) 在“编辑驱动程序定义”对话框中单击“确定”。你应该看到你的 新驱动程序出现在驱动程序定义的驱动程序列表中 偏好页面。
10) 单击“确定”关闭“首选项”对话框。
11) 如果数据源资源管理器未打开,请打开 Connectivity->Data Source Explorer view from the Window->Show View 菜单或从 窗口->打开透视图。
12) 在 Data Source Explorer 中,右键单击 Databases 类别 并选择新建...
13) 在新建连接配置文件向导的向导选择页面中, 在列表中选择 SQL Model-JDBC Connection 条目并单击 Next。
14) 为您的新配置文件命名,例如“SQLiteTestDB”。点击下一步。
15) 在“从下拉列表中选择驱动程序”组合框中,选择您的 新的 SQLite 驱动程序定义。修改示例 URL 中的文件路径 匹配本地 SQLite 数据库的路径。
16) 单击“测试连接”以验证您可以连接到您的 数据库。
17) 单击完成以创建配置文件。
18) 在数据源资源管理器中,右键单击新配置文件并 选择连接。您应该会看到内容出现在下方的树中 轮廓。浏览您的数据库以查看可用的表和 他们的专栏。
【讨论】:
这不适用于使用Java驱动 我以为他想了解他的数据库架构?你的意思是? (抱歉问,只是为了理解错误,如果有的话) 我读到它是因为他试图在运行时用代码动态地做到这一点。但是现在重新阅读它实际上我不确定。 马特你理解正确 嗨,我已经编辑了我的答案。如果这能解决您的问题,请告诉我。以上是关于VC 读取SQLite数据库中的表的数据,该怎么解决的主要内容,如果未能解决你的问题,请参考以下文章