快速学会Linux下使用QT和SQLite数据库教程 (linux下qt的sqlite数据库教程)

QT是一个跨平台的应用程序开发框架,主要用于开发图形界面程序。SQLite是一款轻量级的关系型数据库管理系统,被广泛应用于移动设备和嵌入式系统等领域。在Linux系统中,使用QT和SQLite可以快速开发出具有图形界面且具备轻量级数据库功能的应用程序。下面将介绍如何在Linux系统中快速学会使用QT和SQLite数据库。

1. 安装QT和SQLite

在Linux系统中,可以通过命令行工具来安装QT和SQLite。具体的安装命令如下:

“`

sudo apt-get install qt5-default

sudo apt-get install libsqlite3-dev

“`

这两条命令将会安装QT和SQLite所需的头文件和库文件。安装完成后,即可开始编写应用程序。

2. 编写QT界面程序

在QT中,UI文件使用.ui的文件格式进行存储。通过QT提供的可视化编辑器,我们可以轻松地创建和编辑UI文件。下面是一个简单的例子:

在QT中新建工程,选择QT Widgets Application即可。新建工程后,我们可以在左侧Project中的Forms文件夹下,看到一个名为mnwindow.ui的文件。打开该文件,我们可看到QT可视化编辑器界面。

在编辑器界面中,通过拖拉组件到界面中,我们可以非常直观地设计出需要的用户界面。这里,我们将设计一个简单的窗口,包含一个Label、一个LineEdit和一个PushButton组件。然后在应用程序中,通过代码来实现按钮点击事件的响应。代码如下:

“`c++

#include

#include

int mn(int argc, char *argv[])

{

QApplication app(argc, argv);

QMnWindow *window = new QMnWindow();

QStatusBar *statuar = new QStatusBar(window);

QLabel *label = new QLabel(“Name: “, window);

QLineEdit *lineedit = new QLineEdit(window);

QPushButton *button = new QPushButton(“OK”, window);

QObject::connect(button, &QPushButton::clicked, [&]() {

QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);

db.setDatabaseName(“database.db”);

db.open();

QSqlQuery query(db);

query.exec(“CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)”);

QString name = lineedit->text();

query.exec(QString(“INSERT INTO people (name) VALUES (‘%1’)”).arg(name));

db.close();

label->setText(“Data updated successfully”);

statuar->showMessage(“Data updated successfully”, 3000);

});

QWidget *central = new QWidget(window);

QVBoxLayout *layout = new QVBoxLayout();

layout->addWidget(label);

layout->addWidget(lineedit);

layout->addWidget(button);

layout->setAlignment(label, Qt::AlignLeft);

layout->setAlignment(lineedit, Qt::AlignLeft);

layout->setAlignment(button, Qt::AlignLeft);

central->setLayout(layout);

window->setCentralWidget(central);

window->setStatusBar(statuar);

window->show();

return app.exec();

}

“`

在代码中,我们首先创建了窗口和所需组件。随后,我们定义了一个Lambda表达式,用于实现按钮点击事件的响应。在Lambda表达式中,我们首先通过QSqlDatabase类定义了一个可以连接SQLite数据库的对象db。然后,我们通过setDatabaseName函数来设置数据库的名称。这里我们创建了一个名为database.db的数据库。接着,通过db对象的open函数来打开数据库连接。

在打开数据库连接后,我们使用QSqlQuery类定义一个SQL查询对象query。然后,我们通过query对象的exec函数来执行SQL查询语句。这里,我们使用了CREATE TABLE语句创建一个名为people的数据表,并定义了id和name两个字段。字段id是主键字段,使用AUTOINCREMENT自动增长。字段name是一个文本字段,用于存储人名。

在SQL查询执行完成后,我们通过lineedit组件的text函数获取用户输入的人名。然后,通过QString类的arg函数来生成一个SQL插入语句。这里使用了%1作为占位符,表示要插入的人名。在生成SQL插入语句后,我们通过query对象的exec函数执行该SQL语句,将人名数据插入到数据库中。

在完成数据更新操作后,我们设置label组件的文本为“Data updated successfully”,并在状态栏中显示类似的信息。通过show函数来显示窗口。

3. 编译和运行程序

在完成代码编写后,我们需要使用QT提供的qmake工具将QT工程文件转换为makefile文件,然后使用make命令进行编译。具体步骤如下:

我们需要在QT中打开工程文件。然后,在左侧Project中选择Build,点击Add Kit,在弹出的窗口中选择Desktop QT 5.15.0 GCC 64bit。如果没有这个选项,可以点击Manage Kits,点击Qt Versions右上角的Add按钮,添加该选项。

接着,我们需要在左侧Projects选项中,选择Build Settings,将Build Directory改为工程所在目录下的build目录。然后,在Terminal里面运行命令:

“`

qmake -makefile

make

“`

完成编译后,我们可以在build目录中找到生成的可执行文件。将其在终端中运行,即可看到QT界面程序的运行效果。

4. 结论

相关问题拓展阅读:

如何在Linux下用C语言操作数据库sqlite3

下面我们看看怎么在C语言中向数据库插入数据。

  好的,我们现编辑一段c代码,取名为 insert.c

// name: insert.c

// This prog is used to test C/C++ API for sqlite3 .It is very simple,ha !

// Author : zieckey All rights reserved.

// data : 2023/11/18

#include

#include

#include “sqlite3.h”

#define _DEBUG_

int main( void )

{

sqlite3 *db=NULL;

char *zErrMsg = 0;

int rc;

rc = sqlite3_open(“zieckey.db”, &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件

if( rc )

{

fprintf(stderr, “Can’t open database: %s

“, sqlite3_errmsg(db));

sqlite3_close(db);

exit(1);

}

else printf(“You have opened a sqlite3 database named zieckey.db successfully!

Congratulations! Have fun ! ^-^

“);

//创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中

char *sql = ” CREATE TABLE SensorData(

ID INTEGER PRIMARY KEY,

SensorID INTEGER,

SiteNum INTEGER,

Time VARCHAR(12),

SensorParameter REAL

);” ;

sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

#ifdef _DEBUG_

printf(“%s

“,zErrMsg);

#endif

//插入数据

sql = “INSERT INTO “SensorData” VALUES( NULL , 1 , 1 , ”, 18.9 );” ;

sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

sql = “INSERT INTO “SensorData” VALUES( NULL , 1 , 1 , ”, 16.4 );” ;

sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

sqlite3_close(db); //关闭数据库

return 0;

}

  好的,将上述代码写入一个文件,并将其命名为 insert.c 。

  解释:

  sqlite3_exec的函数原型说明如下:

int sqlite3_exec(

sqlite3*,

const char *sql,

sqlite_callback,

void *,

char **errms

g

);

  编译:

  # gcc insert.c -lsqlite3 -L/usr/local/sqlite3/lib -I/usr/local/sqlite3/include

  insert.c:28:21: warning: multi-line string literals are deprecated

  #

  执行

  # ./a.out

  ./a.out: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory

  #

  同样的情况,如上文处理方法:

  # export LD_LIBRARY_PATH=/usr/local/sqlite3/lib:$LD_LIBRARY_PATH

  # ./a.out

  You have opened a sqlite3 database named zieckey.db successfully!

  Congratulations! Have fun ! ^-^

  (null)

  (null)

  (null)

  #

  运行成功了,好了,现在我们来看看是否插入了数据

  # /usr/local/sqlite3/bin/sqlite3 zieckey.db

  SQLite version 3.3.8

  Enter “.help” for instructions

  sqlite> select * from SensorData;

  1|1|1||18.9

  2|1|1||16.4

如何在Linux下用C/C++语言操作数据库sqlite3

1. 说明 这里我们假设你已经编译好了sqlite的库文件 : libsqlite3.a libsqlite3.la libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 pkgconfig 和可执行文件 : sqlite3 我们再假设你的sqlite3的安装目录在 /usr/local/sqlite3 目录下。 如果不是,我们可以这样做,将你的安装文件复制到 /usr/local/sqlite3 这个目录, 这样我们好在下面的操作中更加统一,从而减少出错的概率 例如:# cp -rf sqlite-3.3.8-ix86/ /usr/local/sqlite3 这里假设 /home/sqlite-3.3.8-ix86/ 是你的安装目录,也就是说你的sqlite原来就是安装在这里 这样之后,我们的sqlite3的库文件目录是:/usr/local/sqlite3/lib 可执行文件 sqlite3 的目录是: /usr/local/sqlite3/bin 头文件 sqlite3.h 的目录是: /usr/local/sqlite3/include 好拉,现在开始我们的Linux下sqlite3编程之旅。 2. 开始 这里我们现在进行一个测试。 现在我们来写个C/C++程序,调用 sqlite 的 API 接口函数。 下面是一个C程序的例子,显示怎么使用 sqlite 的 C/C++ 接口. 数据库的名字由之一个参数取得且第二个参数或更多的参数是 SQL 执行语句. 这个函数调用sqlite3_open() 在 16 行打开数据库,并且sqlite3_close() 在 25 行关闭数据库连接。 # vi opendbsqlite.c 按下i 键切换到输入模式,输入下列代码:// name: opendbsqlite.c // This prog is used to test C/C++ API for sqlite3.It is very simple,ha! // Author : zieckey All rights reserved. // data : 2023/11/13 #include #include int main( void ) { sqlite3 *db=NULL; char *zErrMsg = 0; int rc; //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 rc = sqlite3_open(“zieckey.db”, &db); if( rc ) { fprintf(stderr, “Can’t open database: %s “, sqlite3_errmsg(db)); sqlite3_close(db); exit(1); } else printf(“You have opened a sqlite3 database named zieckey.db successfully! Congratulations! Have fun ! ^-^ “); sqlite3_close(db); //关闭数据库 return 0; } 退出,保存。(代码输入完成后,按下 Esc 键,然后输入: :wq ,回车就好拉) 好拉,现在编译:# gcc opendbsqlite.c -o db.out 或者遇到这样的问题:# gcc opendbsqlite.c -o db.out opendbsqlite.c:11:21: sqlite3.h: 没有那个文件或目录 opendbsqlite.c: In function `main’: opendbsqlite.c:19: `sqlite3′ undeclared (first use in this function) opendbsqlite.c:19: (Each undeclared identifier is reported only once opendbsqlite.c:19: for each function it appears in.) opendbsqlite.c:19: `db’ undeclared (first use in this function) 这是由于没有找到头文件的原因。 也许会碰到类似这样的问题:# gcc opendbsqlite.c -o db.out /tmp/ccTkItnN.o(.text+0x2b): In function `main’: : undefined reference to `sqlite3_open’ /tmp/ccTkItnN.o(.text+0x45): In function `main’: : undefined reference to `sqlite3_errmsg’ /tmp/ccTkItnN.o(.text+0x67): In function `main’: : undefined reference to `sqlite3_close’ /tmp/ccTkItnN.o(.text+0x8f): In function `main’: : undefined reference to `sqlite3_close’ collect2: ld returned 1 exit status 这是个没有找到库文件的问题。 下面我们着手解决这些问题。

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

qt可以实现连接各种数据库,这里介绍qt自带的一种数据库(Qsqlite)

#include

#include

#include

#include

#include

#include

#include

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

query.addBindValue(ages);

QVariantListnames;

names

query.addBindValue(names);

if(!query.execBatch())//进行批处理,如果出错就输出错误

qDebug()

returntrue;

}

#endif//DATABASE_H

然后用QSqlTableModel实现数据库数据显示

关于linux下qt的sqlite数据库教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 快速学会Linux下使用QT和SQLite数据库教程 (linux下qt的sqlite数据库教程)