qt编程中如何为QSqlquery对象指定数据库

qt编程中如何为QSqlquery对象指定数据库,第1张

datah

#define DB_SALES_DRIVER "QMYSQL3"

#define DB_SALES_DBNAME "CAAS"

#define DB_SALES_USER "root"

#define DB_SALES_PASSWD ""

#define DB_SALES_HOST ""

maincpp

#include <qapplicationh>

#include <qsqldatabaseh>

#include <qsqlqueryh>

#include <qsqlcursorh>

#include <qtextedith>

#include <qstringh>

#include <qtextcodech>

#include <qvboxh>

#include "datah"

#include <stdioh>

#include <qpushbuttonh>

class MyQVBox : public QVBox

{

public:

MyQVBox( QWidget parent=0, const char name=0 );

//public slots:

// refValue(QSrting lzw);

};

MyQVBox::MyQVBox( QWidget parent, const char name )

: QVBox( parent, name )

{

QString Lzw("\n");

QSqlDatabase defaultDB = QSqlDatabase::addDatabase(DB_SALES_DRIVER);

if ( defaultDB )

{

defaultDB->setDatabaseName( DB_SALES_DBNAME );

defaultDB->setUserName( DB_SALES_USER );

defaultDB->setPassword( DB_SALES_PASSWD );

defaultDB->setHostName( DB_SALES_HOST );

if ( defaultDB->open() )

{

//插入数据

QSqlQuery query("INSERT INTO test(ID,Name,Age) VALUES(1155, 'Ginger', 125);" );

//提取数据

QSqlCursor cur( "test" ); // 指定表/视图名称

curselect(); // 我们将检索每一条记录

while ( curnext() )

{

qDebug( curvalue( "ID" )toString() + ": " +

curvalue( "Name" )toString() + " " +

curvalue( "Age" )toString() );

Lzwappend(curvalue( "ID" )toString() + ": " +

curvalue( "Name" )toString() + " " +

curvalue( "Age" )toString()+"\n");

}

//qDebug(Lzw);

printf("aaaaaaa");

}

}

QString ustr = (QTextCodec::codecForLocale())->toUnicode(Lzw);

QString sstr = (QTextCodec::codecForLocale())->toUnicode("刷新");

QTextEdit myEdit = new QTextEdit(this,0);

myEdit->setText(ustr);

QPushButton quit = new QPushButton(sstr, this, "quit" );

connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );

}

int main( int argc, char argv[] )

{

QApplication app( argc, argv );

MyQVBox mybox = new MyQVBox(0,0);

//mybox->setText(ustr);

appsetMainWidget(mybox);

mybox->show();

return appexec();

}

//打开数据库

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

dbsetDatabaseName("nmrdb");

if (!dbopen())

{

QMessageBox::critical(0, qApp->tr("Cannot open database"),

qApp->tr("Unable to establish a database connection\n"

"This example needs SQLite support Please read "

"the Qt SQL driver documentation for information how "

"to build it\n\n"

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

return false;

}

//建个QListView显示数据库中的表

//显示数据表

void MainWindow::listDb()

{

dbListModel =new QStringListModel();

dbListModel->setStringList(QSqlDatabase::database()tables());

ui->listView->setModel(dbListModel);

ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);

ui->listView->setResizeMode(QListView::Adjust);

connect(ui->listView,SIGNAL(clicked(QModelIndex)),this,SLOT(showDb(QModelIndex)));

}

//SLOT:数据显示在QTabelView控件中

void MainWindow::showDb(QModelIndex index)

{

dbName=indexdata()toString();

tableViewModel=new QSqlTableModel(this);

tableViewModel->setTable(dbName);

tableViewModel->select();//

ui->dbTable->setSortingEnabled(true);

ui->dbTable->setModel(tableViewModel);

ui->dbTable->sortByColumn(1,Qt::AscendingOrder);

ui->dbTable->resizeColumnsToContents();

ui->dbTable->setSelectionBehavior(QAbstractItemView::SelectRows);

}

在对数据库执行打开 *** 作的时候,是会产生一个临时文件,实际上是把原来数据库里面的数据提取到临时文件进行 *** 作,关闭数据库的时候再把临时文件里的数据传回去,消除临时文件。如果上一次没有关闭数据库的话,以后实际上是在 *** 作一个空的数据库文件。

所以数据库的 *** 作应该是每次 *** 作前打开, *** 作后关闭,这样是正确的

以上就是关于qt编程中如何为QSqlquery对象指定数据库全部的内容,包括:qt编程中如何为QSqlquery对象指定数据库、Qt Quick中如何打开一个本地数据库、Qt数据库编程如何刷新数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10089943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存