当前位置:首页 » 操作系统 » sqlite读取数据库

sqlite读取数据库

发布时间: 2022-11-26 06:03:39

Ⅰ 怎样在Qt下连接读写sqlite数据库

这里以学生信息的录入与读取来作为演示,主要目的是演示数据库的操作,至于数据的显示等不在演示范围内,请您自行研究。
首先,在Qt中建立一个图形界面的程序项目。

然后,我们在命令行下用sqlite命令创建了数据库 C:\StudentInfo\sutdentdata.db,并且建立了一个数据库表student,该表有四个字段ID、Name、Sex、Age,未向表中添加任何数据。
关于sqlite的简单使用,可以参考我们的另一篇经验。
2SQLite的简单使用方法

在读写SQLite数据库中,我们最主要用到的是QSqlDatabase类及QSqlQuery类,前者负责创建数据库连接并打开数据库,后者负责执行查询操作。实际上前者也可以进行查询操作并将结果返回给QSqlQuery对象,但是Qt并不建议这么做。
在干活前,依然是先看看Assitant,这是培养独立解决问题的一个好习惯。

好,下面给 录入 按钮的点击事件编写代码。关于如何给按钮的某一事件进行编码,可以参考我们另一篇经验。
首先在.pro文件中加上sql,然后别忘了#include <QSqlDatabase>以及#include <QSqlQuery>。
好了,下面在录入按钮的槽中加入如下代码:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","wconntosqlite");
mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");
if(mydb.open())
{
QSqlQuery query(mydb);
QString sqlstr="insert into student (ID,Name,Sex,Age) values ('"
+ui->le_id->text()+"','"
+ui->le_name->text()+"','"
+ui->le_sex->text()+"',"
+ui->le_age->text()+")";
bool isok=query.exec(sqlstr);
if(isok)
qDebug()<<"数据写入成功";
}
上面我们先调用了QSqlDatabase的静态函数addDatabase创建了一个名为wconntosqlite的连接。然后给其传递数据库名称。
如果数据库打开成功,就创建一个关联的QSqlQuery对象,最后由QSqlQuery来执行插入数据工作。
特别注意:QSqlQuery对象的创建必须在mydb open成功以后才行,否则会出错。
我们来看看效果如何。
4c++怎么做界面

我们接着来写查询按钮的代码,输入以下代码:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","rconntosqlite");
mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");
if(mydb.open())
{
QSqlQuery query(mydb);
QString sqlstr="select * from student";
bool isok=query.exec(sqlstr);
if(isok)
qDebug()<<"数据读取成功";

query.first();
QString result="学号:"+query.value(0).toString()+" "
+"姓名:"+query.value(1).toString()+" "
+"性别:"+query.value(2).toString()+" "
+"年龄:"+query.value(3).toString();
ui->lbl_query->setText(result);
}
与写入数据基本差不多,这里需要特别注意的是query.first();。看看Assistant怎么说的就知道了。原来,query对象在执行完查询语句后,query的位置被置于一个不可用的位置,如果想从query中获取数据,需要设置query到一个可用的记录中才行。方法有好几种,这里我们用了first()成员函数。
好,来看看运行结果。
可以看到软件读取的数据与控制台窗口的数据是一致的。

我们来总结下Qt操作SQLite数据库的五步走法决:
第一步,建立一个连接:QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
第二步,关联数据库文件:db.setDatabaseName("这里你的数据库文件路径")
第三步,打开数据库:db.open()
第四步,如果数据库打开成功,就建立一个相关联的QSqlQuery对象:QSqlQuery query(db)
第五步,执行SQL语句:query.exec("你的SQL语句字符串")

Ⅱ 安卓怎么读取sqlite数据库

安装SQLite Expert Professional 可以在网上下载,我下载的是试用版,没有找注册码,但是试用不影响使用,反正用几次查看到数据库操作没有错误就不用这个工具了。当然也可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看。android项目中的sqlite数据库位于/data/data/项目包/databases中。先介绍使用DDMS导出sqlite数据库的操作和使用adb工具访问sqlite数据库。
首先打开android项目的调试模式,然后找到显示DDMS

切换到DDMS,显示File Explorer窗口,找到/data/data/ 如下图1 ,
然后找到程序包的文件夹,打开databases,就能看到sqlite数据库文件了。选择将其导出。如下图2.
这样就把sqlite数据库文件以文件的方式导出来了,然后使用sqlite界面管理工具如SQLite Expert Professional可以打开该数据库了。其他 sqlite界面管理工具如sqlite administrator、sqlite man或者firefox插件sqlite manager也可以打开该数据库。

使用adb工具访问sqlite数据库
Android Debug Bridge(ADB)是Android的一个通用调试工具,它可以更新设备或模拟器中的代码,可以管理预定端口,可以在设备上运行shell命令,我们 知道android是基于linux内核,它的内部文件结构也是采用linux文件组织方式,因此访问它的文件结构需要使用shell。这次我们就会用 shell来访问android应用中的sqlite数据库文件。
1、运行cmd,切换到android-sdk目录,运行adb.exe,加上参数shell,出现#号就代表进入了shell命令模式,注意adb要在Android模拟器运行时才能进入shell:如下图

进入数据库所在目录:
shell命令记住两个基本命令ls和cd,类似windows命令提示行中的dir和cd,代表列出当前目录下文件列表和进入到指定目录。了解这两个命令之后,就可以找到data/data/项目包名/databases 如下图1, 找到数据库文件如下图2。

使用sqlite管理工具来进行数据库操作
键入sqlite3 数据库名就进入了sqlite管理模式了。
如下图

设置sqlite环境变量:
在android的sdk中自带了sqlite3.exe,这是sqlite的官方管理工具,它是一个命令行工具。为了使用方便,将其路径注册到系 统环境变量path中,即将;%Android_Home%加在Path中,这样只样运行sqlite3,就能直接打开sqlite管理工具了。
如下图:

8
使用sqlite管理数据库:
sqlite命令行工具默认是以;结束语句的。所以如果只是一行语句,要在末尾加;,或者在下一行中键入;,这样sqlite命令才会被执行。
sqlite常用命令:
.tables--查看数据库的表列表
.exit--退出sqlite命令行
其他命令可随时.help查看帮助。sql命令可直接在此命令行上执行即可:

Ⅲ 如何通过命令行窗口查看sqlite数据库文件

1、找到AndroidSDK目录下的platform-tools文件夹,会发现该目录下有一个adb.exe文件。到系统环境变量出去设置Path的值,将 adb.exe 所在的路径加进去。

2、在命令行窗口输入:" adb shell " 进入控制台

3、输入 " cd /data/data/包名.项目名称(小写)/databases/ " (如: cd /data/data/com.keqi.test/databases/)进入项目文件所在的存储路径

4、可通过" ls "命令去查看该目录下的文件

5、输入" sqlite3 + 数据库名.db " (如: " sqlite3 BookStore.db ") 打开数据库

6、可输入 " .table " 查看数据库中存在哪些表

7、可输入" .schema ' 查看建表语句

8、通过SQL查询语句 " select * from 表名 " (如:" select * from Book ")

Ⅳ android sqlite怎么读取数据库

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

[java] view plain 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如下:

Ⅳ 如何读取android asserts下面已经存在的sqlite数据库

这个可以在每次应用开启时检测database文件夹下是否有这个名称的数据库,如果没有就从asserts中获得释放一次,给你看一下我的代码:

我的asserts里有一个文件叫做:address.db

/**
*在onCreate()方法中调用
*/
privateFileinitDatabase(){
BufferedInputStreambis=null;
BufferedOutputStreambos=null;
Filefile=getDatabasePath("address.db");
byte[]buffer=newbyte[1024];
intc;

try{
if(!file.exists())
file.getParentFile().mkdirs();
else
returnfile;
bis=newBufferedInputStream(getAssets().open("address.db"));
bos=newBufferedOutputStream(newFileOutputStream(file));

while((c=bis.read(buffer))!=-1)
bos.write(buffer,0,c);

}catch(IOExceptione){
e.printStackTrace();
returnnull;
}finally{
try{
if(bis!=null)
bis.close();
if(bos!=null){
bos.close();
bos.flush();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
returnfile;
}

Ⅵ 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();

Ⅶ c# sqlite 读取数据库 多线程 高频率 错误

privatevoidbutton1_Click(objectsender,EventArgse)
{
try
{
//禁用按钮
this.button1.Enabled=false;
//这里开始耗时工作
}
catch(Exception)
{
}
finally
{
//启用按钮
this.button1.Enabled=true;
}
}

Ⅷ 读取sqlite数据库时用SQLiteDataAdapter填充Datatable时遇到的问题。

那你查一下DateTime的字段是否为空值,如果为空值那么在填充到DataTable时得设置一个默认值,否则就会出现你所说的错误。
另外,如果你在读取DateTime字段时是使用dr.GetDateTime(1)这种方式读取的,那么得确保DateTime字段不为空值,否则读取时也会出现你所说的错误

热点内容
什么配置的车标好 发布:2025-05-17 21:41:20 浏览:203
linux支持线程 发布:2025-05-17 21:26:14 浏览:184
元神队伍配置都由什么组成 发布:2025-05-17 21:20:18 浏览:477
闲鱼和安卓哪个赚钱 发布:2025-05-17 21:15:56 浏览:584
c语言一个c源程序 发布:2025-05-17 21:11:44 浏览:315
如何加密手机的文件 发布:2025-05-17 21:11:43 浏览:917
ios开发文件上传 发布:2025-05-17 21:10:40 浏览:984
g92编程 发布:2025-05-17 21:00:31 浏览:171
汇编语言第三版脚本之家 发布:2025-05-17 20:54:26 浏览:400
资源配置最佳状态叫什么 发布:2025-05-17 20:48:58 浏览:85