当前位置:首页 » 操作系统 » qtsqlite数据库

qtsqlite数据库

发布时间: 2022-05-11 15:24:04

A. QT中table view怎么显示sqlite数据库的内容

在QT的widget中用tableview显示sqlite数据库表中的内容。
假设有数据库文件test.db,有表table(id integer, name nvarchar(20),age integer),且有数条数据。
首先用QTcreator创建一个基于Widget类的窗口,再拖一个tableview到widget中,保存,然后按照如下方法进行:
1.在widget.h中增添头文件:QtSql/qsql.h、QtSql/QsqlDatabase、QtSql/QsqlQuery、QtSql/QsqlQueryModel
2.在.pro工程文件中添加:QT+=sql
3.在widget.cpp中widget的构造函数中添加如下代码:
QsqDatabase db = QsqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test.db");
if(!db.open())
{
//错误处理
}
static QSqlQueryModel *model = new QSqlQueryModel(ui->tableview);
model->setQuery(QString("select * from table"));
model->setHeaderData(0,Qt::Horizontal,QObject::tr("编号"));
model->setHeaderData(1,Qt::Horizontal,QObject::tr("姓名"));
model->setHeaderData(2,Qt::Horizontal,QObject::tr("年龄"));
ui->tableview->setModel(model);
db->close();
这样之后,table表里的内容就会显示到tableview中了。

B. qt如何调用sqlite数据库

//自己设置连接名,不使用默认连接名
if(SdbSqlite.contains("Conn2sqlite"))
{
SdbSqlite=QSqlDatabase::database("Conn2sqlite");
}
else
{
SdbSqlite=QSqlDatabase::addDatabase(
"QSQLITE","Conn2sqlite");
}
SdbSqlite.setDatabaseName("FiveChess.database");//数据库名称

这是连接

if(SdbSqlite.open())
{
intRltRowNumber=0;//查询出来的结果列数
QStringStrSql1=
QString("selectname,grade,integration,round,victory,defeat,rank"
"frommemberwhereaccount='%0'andpassword='%1';")
.arg(StrAcn,StrPsdOrNew);
QSqlQueryquery1(SdbSqlite);
query1.exec(StrSql1);
while(query1.next())
{
if(SdbSqlite.driver()->hasFeature(QSqlDriver::QuerySize))
{
//速度快
RltRowNumber=query1.size();
}
else
{
//速度很慢
//实际执行的是这个
query1.last();
RltRowNumber=query1.at()+1;
}
}
SdbSqlite.close();
}

这是查询

C. 怎样在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语句字符串")

D. vs下的qt怎么操作sqlite数据库

采用将项目中的sqlite文件拷到android内存卡上的固定位置,先判断位置上是否存在sqlite文件,不存在则复制文件。 sqlite可放在res的raw目录下,亦可放在assets下,放在assets下,可新建其他层次目录,本例选择assets 1.首先,添加sdcard权限在An..

E. qt如何连接sqlite数据库

#include <QtGui/QApplication>
#include <QSqlDatabase>
#include <QtSql>
#include <QSQLiteDriver>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase(new QSQLiteDriver(),"QSQLITE");
db.setDatabaseName("test.db");
//test.db是通过SQLite程序创建的数据库文件,当前文件夹
if ( !db.open())
{
return 0;
}
return app.exec();
}

这是打开 后面的操作跟其他的数据库操作一样。还不明白可以追问。望采纳 谢谢

F. qt怎样创建数据库以及数据库的操作

qt可以实现连接各种数据库,这里介绍qt自带的一种数据库(Qsqlite)
#include<QSqlQuery>
#include<QObject>
#include<QVariantList>
#include<QDebug>
#include<QSqlError>
#include<QTextCodec>
#include<QObject>
staticboolcreateConnection()
{QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mytest.db");
if(!db.open())
returnfalse;
QSqlQueryquery;
//query.exec(QObject::tr("createtablestudent(idintprimarykey,namevchar)"));
//query.exec(QObject::tr("insertintostudentvalues(0,'刘')"));
////query.exec(QObject::tr("insertintostudentvalues(1,'刚')"));
//query.exec(QObject::tr("insertintostudentvalues(2,'红')"));
//query.prepare("insertintostudentvalues(?,?)");
//-------------------------------------------------------
//通过下面这段代码可以实现向数据库插入变量
//--------------------------------------------------------
QVariantListages;
intx1,x2,x3,x4;
x1=12;
x2=13;
x3=14;
x4=15;
ages<<x1<<x2<<x3<<x4;
query.addBindValue(ages);
QVariantListnames;
names<<QObject::tr("小王")<<QObject::tr("小明")<<QObject::tr("小张")<<QObject::tr("小新");//如果要提交空串,用QVariant(QVariant::String)代替名字
query.addBindValue(names);
if(!query.execBatch())//进行批处理,如果出错就输出错误
qDebug()<<query.lastError();
returntrue;
}
#endif//DATABASE_H
然后用QSqlTableModel实现数据库数据显示

G. 如何进入QT自待的SQLite数据库

如何进入QT自待的SQLite数据库
详细操作件如下命令adb shell#cd data#cd data#ls 每个应用程序都会在这里根据包名创建一个文件夹#cd org.contact#cd databases#sqlite3 contact //进入数据库#.schema //查看表内容

H. Qt如何对sqlite数据库进行加密

给SQLite数据库加密解密的方法:
1、创建空的sqlite数据库。
//数据库名的后缀你可以直接指定,甚至没有后缀都可以
//方法一:创建一个空sqlite数据库,用IO的方式
FileStream fs = File.Create(“c:\\test.db“);
//方法二:用SQLiteConnection
SQLiteConnection.CreateFile(“c:\\test.db“);

创建的数据库是个0字节的文件。
2、创建加密的空sqlite数据库
//创建一个密码为password的空的sqlite数据库
SQLiteConnection.CreateFile(“c:\\test2.db“);
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2.db“);
SQLiteConnection cnn = new SQLiteConnection(“Data Source=D:\\test2.db“);
cnn.Open();
cnn.ChangePassword(“password“);

3、给未加密的数据库加密
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test.db“);
cnn.Open();
cnn.ChangePassword(“password“);

4、打开加密sqlite数据库
//方法一
SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test2.db“);
cnn.SetPassword(“password“);
cnn.Open();
//方法二
SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder.DataSource = @”c:\test.db“;
builder.Password = @”password“;
SQLiteConnection cnn = new SQLiteConnection(builder.ConnectionString);
cnn .Open();

除了用上述方法给SQLite数据库加密以外,您还可以使用专业的文件加密软件将SQLite数据库加密。

超级加密 3000采用先进的加密算法,使你的文件和文件夹加密后,真正的达到超高的加密强度,让你的加密数据无懈可击。

超级加密3000使用起来,只要点击需要加密的文件的右键,即可轻松实现文件的加密。

解密只要双击已加密文件,输入密码即可轻松搞定。

I. qt 怎么支持sqlite数据库

Qt默认是支持QSQLITE数据库的

QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("acidalia");
db.setDatabaseName("customdb");
db.setUserName("mojito");
db.setPassword("J0a1m8");
boolok=db.open();
热点内容
直链云存储 发布:2025-01-16 13:19:30 浏览:726
电脑主机服务器多少钱 发布:2025-01-16 13:00:28 浏览:667
linuxoracle操作 发布:2025-01-16 12:40:50 浏览:47
河北存储服务价格 发布:2025-01-16 12:39:21 浏览:349
挂机服务器的搭建 发布:2025-01-16 12:34:07 浏览:417
安卓怎么删除信任凭证 发布:2025-01-16 12:22:06 浏览:338
代理编译 发布:2025-01-16 12:07:59 浏览:794
服务器为什么老是无响应 发布:2025-01-16 12:07:59 浏览:894
安卓怎么传软件到苹果 发布:2025-01-16 12:01:28 浏览:955
pythonforzip 发布:2025-01-16 11:59:46 浏览:912