PDA

View Full Version : سوال: پر کردن یک متغیر با استفاده از دستور select از database



ravaei
شنبه 16 اسفند 1393, 18:52 عصر
درود ...

من کد زیر رو بعد از اتصال به دیتابیس نوشتم و بدون هیچ مشکلی record های جدید رو وارد دیتا بیس میکنم ...


QSqlQuery qry; qry.prepare( "INSERT INTO tabel1 (name,phonenumber,address,need,details) VALUES (?,?,?,?,?)" );
qry.addBindValue(name);
qry.addBindValue(phonenumber);
qry.addBindValue(address);
qry.addBindValue(need);
qry.addBindValue(details);


if( !qry.exec() )
qDebug() << qry.lastError();
else
qDebug( "Inserted!" );

بعدش یه tableview ساختم و cloums هاش رو اضافه کردم و اسمشونم تعیین کردم با کد زیر :


QStringList horzHeaders; QString Name = "نام";
QString Address = "آدرس";
QString Phonenumber = "شماره تماس";
QString Need = "سفارش";
QString Details = "توضیحات";
horzHeaders <<Name<<Phonenumber<<Address<<Need<<Details;
ui->tableWidget->setColumnCount(5);
ui->tableWidget->setHorizontalHeaderLabels(horzHeaders);

حالا می خوام از دیتا بیس بخونم بریزم تو جدول کد زیر رو نوشتم بقیشو نمیدونم چیکار کنم :


QSqlQuery qry; qry.prepare( "SELECT name, phonenumber FROM table1 " );


if( !qry.exec() )
qDebug() << qry.lastError();
else
{
qDebug( "Selected!" );

chikar
شنبه 16 اسفند 1393, 19:53 عصر
QSqlTableModel *model = new QSqlTableModel(parentObject, database);
model->setTable("employee");
model->select();

QTableView *view = new QTableView;
view->setModel(model);

or

QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT name, salary FROM employee");

ravaei
شنبه 16 اسفند 1393, 20:28 عصر
QSqlTableModel *model = new QSqlTableModel(parentObject, database);
model->setTable("employee");
model->select();

QTableView *view = new QTableView;
view->setModel(model);

or

QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT name, salary FROM employee");




ممنون من خودم یه tableview درست کرده بودم تو designer هم model رو به اون نسبت دادم نشد هم این حالتی که شما گفتید بازم نشد تابع رو کلاٌ پایین میزارم یه بررسی بکنید :

void worklist_desginer::add_row_tolist(){


QSqlQueryModel *model = new QSqlQueryModel; model->setQuery("SELECT name FROM table1");


QTableView *view = new QTableView;
view->setModel(model);
view->show();

}

ravaei
شنبه 16 اسفند 1393, 21:41 عصر
حل شد ممنون ...

هم کدی که آقای chikar پیشنهاد کردن درسته هم کد زیر ...



#include <QtSql/QSqlError>
#include <QSqlQuery>
#include <QtSql>
#include <QtDebug>
#include <qtableview.h>


void worklist_desginer::add_row_tolist()
{


// کانکت کردن به دیتابیس
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" );
db.setDatabaseName( "./naghshazinSQ.db" );
if( !db.open() )
{
qDebug() << db.lastError();
qFatal( "Failed to connect." );
}
db.setDatabaseName( ":memory:" );




// اضافه کردن رکورد های جدول دیتابیس به tableview

QSqlQuery* query = new QSqlQuery(db);
query->prepare("SELECT * FROM tabel1");
query->exec();


QSqlTableModel *model = new QSqlTableModel();
model->setQuery(*query);
model->setHeaderData(0, Qt::Horizontal, "Col1");
model->setHeaderData(1, Qt::Horizontal, "Col2");
model->setHeaderData(2, Qt::Horizontal, "Col3");


// ایجاد جدول جدید و نمایش
QTableView *view = new QTableView;
view->setModel(model);
view->show();


}



اگه می خواید از tableview که توی designer درست کردید استفاده کنید تابع رو به شکلی که من تعریف کردم تعریف کنید ...

ممنون