qtsqlquery查詢出來的條數(shù)和sqlserver不一致的原因就在于實(shí)體對象中的Key列即列1的值相同(在我們的例子中都為1)。
在句容等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),句容網(wǎng)站建設(shè)費(fèi)用合理。
為了避免錯(cuò)誤的結(jié)果,可以把把視圖中col1,col2,col3的列都設(shè)為實(shí)體鍵。
這樣可以避免一些問題,有時(shí)候列太多了,全設(shè)為實(shí)體鍵,不是一個(gè)好辦法。
qt可以使用odbc驅(qū)動(dòng)去連接sqlserver,先配置好odbc數(shù)據(jù)源,然后在qt里面調(diào)用數(shù)據(jù)源即可連接;
連接長時(shí)間不操作是可能會(huì)斷開,檢查數(shù)據(jù)庫的配置連接時(shí)間,一般會(huì)有時(shí)間限制,建議你程序啟動(dòng)需要和數(shù)據(jù)庫交互時(shí),先判斷數(shù)據(jù)庫是否是連接狀態(tài),未連接時(shí)重新連接
前提:
SQL Server里已經(jīng)建立了相應(yīng)的數(shù)據(jù)庫,有對應(yīng)的表和數(shù)據(jù)。
步驟:
1. Qt里新建一個(gè)空工程,添加main.cpp文件。
2. 在工程文件(.pro文件)添加一行:QT += sql。
3. 該敲代碼了,代碼如下:
[cpp] view plain copy
#include QtGui
#include QString
#include QTextCodec
#include QSqlDatabase
#include QtSql
/*連接數(shù)據(jù)庫*/
void OpenDatabase()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("DRIVER={SQL SERVER};"
"SERVER=%1;"
"DATABASE=%2;"
"UID=%3;"
"PWD=%4;").arg("QIAN-PC")
.arg("StuManager")
.arg("sa")
.arg("123456"));
if (!db.open())
{
QMessageBox::warning(0, qApp-tr("Cannot open database"),
db.lastError().databaseText(), QMessageBox::Cancel);
}
else
{
qDebug()"Connect to Database Success!";
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
/*設(shè)置編碼格式*/
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
OpenDatabase();
QDialog *mainDialog = new QDialog;
QTableView *tableView = new QTableView;
QHBoxLayout *layout = new QHBoxLayout;
layout-addWidget(tableView);
mainDialog-setLayout(layout);
QSqlQueryModel *model = new QSqlQueryModel;
model-setQuery(QObject::tr("select * from 教師"));
tableView-setModel(model);
mainDialog-adjustSize();
mainDialog-show();
return a.exec();
}
4. 看看運(yùn)行結(jié)果吧。
參考網(wǎng)址: