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

qt从数据库读取

发布时间: 2023-04-11 13:52:52

Ⅰ 求一段用Qt来实现数据库读取并显示成折线图的代码

[cpp]viewplainprint?
/*************************************************
折线图绘制
author周翔
2012-8-14

对外提供接口

voidshowData(intdata);接受外部的折线数据
voidsetSingleUnitX(constint&value);设置x轴的单位像素
voidstartUpdataTimer(intmsecond);定时器更新折线图
voidstopUpdataTimer();关闭定时器

*************************************************/

#ifndefLINEGRAPHWIDGET_H
#defineLINEGRAPHWIDGET_H

#include<QWidget>
#include<QPen>
#include<QPainter>
#include<QResizeEvent>
//#include<QDebug>
#include<QTimer>

structpoint
{
intx;
inty;
};

classLineGraphWidget:publicQWidget
{
Q_OBJECT
public:
//mix和max为折线的y轴的数据范围
explicitLineGraphWidget(intmin,intmax,QWidget*parent=0);
voidsetSingleUnitX(constint&value){singleUnitX=value;}//设置x轴的一个单位占多少个像素,默认10
//支持定时器定时更新
voidstartUpdataTimer(intmsecond);
voidstopUpdataTimer();
signals:
//支持实时更新
voidnewDataCome();//有新数据到来时发出的折线图更新信号
publicslots:
/**
*@briefshowData
*@paramadress地址
*@param_data数据
*/
voidshowData(constQString&adress,int_data);//接受来之外部的数据
/**
*@briefslt_showData接受外部数据
*@paramname设备名
*@param_data数据
*/
voidslt_showData(ushortname,int_data);
protected:
voidpaintEvent(QPaintEvent*);
voidresizeEvent(QResizeEvent*e);
private:
QStringm_currentNodeAdress;//当前显示的节点的地址
ushortm_currentNodeName;//当前节点的设备名

QList<int>xList;
QList<int>yList;
intCounter;//窗口的长和宽
intwidgetX;
intwidgetY;
//折线图的显示范围
intrangeMin;
intrangeMax;
//根据窗口和范围得出的单位长,x轴,y轴
intsingleUnitX;
intsingleUnitY;

//根据窗口得出的多少个单位,x轴,y轴
intsumUnitX;
intsumUnitY;

pointbasePoint;//折线图的原点

pointxAxisEndPoint;//X轴的终点

pointyAxisEndPoint;//Y轴的终点

QTimer*timer;

voidgetSumUnitX();
voidgetSingleUnitY();

voidinitGraph();

voidflush();//数据传入的节点不是现在的当前的节点的时候,刷新画面,清除所有的值


};

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

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

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

在读写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成功以后才行,否则会出错。
我们来看看效果如何。
1c++怎么做界面

我们接着来写查询按钮的代码,输入以下代码:
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)

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

采用将项目中的sqlite文件拷到android内存卡上的固定位置,先判断位置上是否存在sqlite文件,不存在则复制文件。 sqlite可放在res的raw目录下,亦可放在assets下,放在assets下,可新建其他层次目录,本例选择assets
1.首先,添加sdcard权限在AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在activity中有如下代码

2.Java代码

button2.setOnClickListener(new Button.OnClickListener() {

@Override
publicvoid onClick(View arg0) {
try{
String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/testdb"; //将要存放于的文件夹
String DATABASE_FILENAME = "testDatabase.db"; //文件名
String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;
File dir = new File(DATABASE_PATH);
// 如果/sdcard/testdb目录中存在,创建这个目录
if (!dir.exists())
dir.mkdir();
// 如果在/sdcard/testdb目录中不存在
// test.db文件,则从asset\db目录中复制这个文件到
// SD卡的目录(/sdcard/testdb)
if (!(new File(databaseFilename)).exists()) {
// 获得封装testDatabase.db文件的InputStream对象
AssetManager asset=getAssets();
InputStream is=asset.open("db/testDatabase.db");
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = newbyte[8192];
int count = 0;
// 开始复制testDatabase.db文件
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
asset.close();
}
SQLiteDatabase mSQLiteDatabase=openOrCreateDatabase(databaseFilename, Activity.MODE_PRIVATE, null);//有则打开,没有创建
Cursor cur=mSQLiteDatabase.rawQuery("select * from table1", null);
if(cur!=null){
if(cur.moveToFirst()){
do{
int idColumnIndex=cur.getColumnIndex("id");
int numColumnIndex=cur.getColumnIndex("num");
int dataColumnIndex=cur.getColumnIndex("data");
int id=cur.getInt(idColumnIndex);
int num=cur.getInt(numColumnIndex);
String data=cur.getString(dataColumnIndex);
System.out.println("id:"+id+";num:"+num+";data:"+data);
}while(cur.moveToNext());
cur.close();
}
}
mSQLiteDatabase.close();//关闭数据库连接
}catch(Exception e){
e.printStackTrace();
}
//deleteDatabase("testDatabase.db");//删除数据库
}
});

Ⅳ 如何用Qt连接数据库并导入文件

可以使用QT自带的数据库完成操作,以下是参考代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加数据库

db.setDatabaseName("note.db"); //创建一个note.db的文件存储数据

db.open(); //开启数据库
query = QSqlQuery(db); //获得访问数据库的query
query.exec(XXX); //执行毕喊指令(XXX为SQL指令)
db.close(); //关闭数据库

一般而言会将db变量作为全局变量或者数据成员,当需要访问的滑液时候就获取一个query就可以了。

要实现所提到的功能,要好好看看QString、QStringList,这两玩意主要是临时存放数据、分割数据等作用,另外,要看QFile、QDir、QFileInfo、QTextStream,这四个主要用来读取文本数据。看看QVector或者QList等来存放读出来的数据。

另外,要实现这玩意,SQL的语句不要求精通,但是基本的Create、Insert、Select、Delete等操作要准确无误。否则出错了QT是看不出来的手让野。QT不会检测SQL的准确性的。

Ⅳ 急求高手解答!Qt用户登录从数据库读取用户名跟line edit比对

.arg(ui->username->text());
%1要加携罩 ‘ ’
query.exec(s);最后升扒写,前期就辩笑闹把数据库关了

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:336
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:944
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:741
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:372