qt数据库(qt数据库管理系统)

本篇文章给大家谈谈qt数据库,以及qt数据库管理系统对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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

qt中怎么连接mysql数据库

1: windows 下银森登陆mysql 命令行,(1)进入cmd (2) cd mysql 安装路径/mysqlserver5.6/bin (3) 使用命令mysql -u root -p 然后根据提示输入密码 进入命令行 select user(); //显示当前用户 2: 在同一台电脑上利用Qt 访问数据库 (1)显示当前电脑上安装的数据库驱动 QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() "/t" driver; (2)QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");/对 QMYSQL进行操作,本函数 有第二个参数 连接名 db.setHostName("localhost");//或127.0.0.1 本主机 db.setPort(3306); db.setDatabaseName("example"); //对数据库example进行操作 db.setUserName("wangxuetao"); //wangxuetao是一锋衫亩个对example数据库有操作权限的账户 db.setPassword("3791948"); 于是mysql中增加一个账户塌亮可使用 Grant all previliges on *.* to ‘wangxuetao’@’localhost’ identified by ‘3791948’ with grant option; Flush privileges; //更新 (3)db.open() 函数可由于检测数据库是否连接成功 coutDBConnection(); 2. m_sqlquery = new QSqlQuery("",m_sqldb);//statement 1:connect db with sql query 3. if(result == R_OK) 4. { 5. result = m_sqlquery-exec("INSERT INTO children(fname,age) VALUES('A nn2',13)"); 6. if(!result) 7. qDebug()" [OK] ""EXEC successed"; 8. m_sqlquery-exec("SELECT * FROM children c LIMIT 0,1000"); 9. while(m_sqlquery-next()) 10. { 11. qDebug()value(0).toString()value(1). toString(); 12. } 13. }

[img]

查看Qt支持哪些数据库

Qt默认是支持QSQLITE数中困据库的

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setHostName("acidalia"); db.setDatabaseName("customdb"); db.setUserName("mojito"纯培迅做此); db.setPassword("J0a1m8"); bool ok = db.open();

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

QT创建和插入的操作代码如下:大携

bool database::createDatabase()

{

QSqlQuery query; // 此处请查询 query的相关操作

qDebug() "Start to create table...";

//create table: User

query.exec("CREATE TABLE [User] ( [userId] VARCHAR(40) NOT NULL, [username] VARCHAR(40) NOT NULL, [email] VARCHAR(40), [password] VARCHAR(40), [city] VARCHAR(20), PRIMARY KEY([userId]) )"滚旁伏); // 一定注意不要拼写错误,引号内是不提示拼写错误的。

//create table: Connect

query.exec("CREATE TABLE [Connect] ( [LeftUser] VARCHAR(40) NOT NULL, [RightUser] VARCHAR(40) NOT NULL, [relation] INTEGER DEFAULT '0' NULL, PRIMARY KEY ([LeftUser], [RightUser]))");

if (query.lastError().isValid())

{

qDebug() query.lastError();

return false;

}

else

{

qDebug() "Create database successfully.";

}

return true;

}

插入操作

bool database::adduser( User user )

{

if (!db.isOpen())

{

createconnection();

}

QSqlQuery query;

qDebug() "start to insert data";

query.exec("INSERT INTO [User] ( userId, username, email, password, city) VALUES(?,?,?,?,?)");

QVariantList userId;

userId 启樱 user.getUserId();

query.addBindValue(userId);

QVariantList username;

username user.getUserName();

query.addBindValue(username);

QVariantList email;

email user.getEmail();

query.addBindValue(email);

QVariantList password;

password user.getPassword();

query.addBindValue(password);

QVariantList city;

city user.getCity();

query.addBindValue(city);

try

{

if (!query.execBatch())

{

qDebug() query.lastQuery();

qDebug() query.lastError();

return NULL;

}

}

catch(...)

{

QMessageBox::critical(0, "Add New Node error!",

"Unable to add a new Node!/n/n"

"Click Cancel to exit.", QMessageBox::Cancel);

}

if( !UpdateConnectTable(user.getUserId(),user.getUserId(),2))

{

QMessageBox::critical(0,"","Update table Connect error");

return NULL;

}

return true;

}

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

标签列表