#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实现数据库数据显示
可以使用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的准确性的。
1、 继承QThread 重写虚函数void run()
启动 start()
2、
QThread *p = new QThread
this->moveToThread(p)
connect(p, SIGNAL(started()), this, slot( xxfun() ))
p->start()
3、QtConcurrent::run( )
void printMes(bool *TF )
{
qDebug()<<"pprintMes(char*mes) thread : "<
qDebug()<<*TF
}
void sendQThread::printString( QString str )
{
qDebug()<<str << QThread::currentThreadId()
}
3.1创建
m_threadFlag= true
QtConcurrent::run(printMes, &m_threadFlag)
3.2创建
QString str = QString("我去%1").arg(i)
QtConcurrent::run(this, &sendQThread::printString, str )
QString hello(QString name)
{
qDebug() <<"Hello"<<name <<"from"<<QThread::currentThread()
return name
}
//掉用处QFuture f1 = QtConcurrent::run(hello, QString("Alice"))QFuture f2 = QtConcurrent::run(&threadPool, hello, QString("Bob"))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)