重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
前提:
创新互联建站专业为企业提供行唐网站建设、行唐做网站、行唐网站设计、行唐网站制作等企业网站建设、网页设计与制作、行唐企业网站模板建站服务,十余年行唐做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
SQL Server里已经建立了相应的数据库,有对应的表和数据。
步骤:
1. Qt里新建一个空工程,添加main.cpp文件。
2. 在工程文件(.pro文件)添加一行:QT += sql。
3. 该敲代码了,代码如下:
[cpp] view plain copy
#include QtGui
#include QString
#include QTextCodec
#include QSqlDatabase
#include QtSql
/*连接数据库*/
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);
/*设置编码格式*/
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. 看看运行结果吧。
参考网址:
qtsqlquery查询出来的条数和sqlserver不一致的原因就在于实体对象中的Key列即列1的值相同(在我们的例子中都为1)。
为了避免错误的结果,可以把把视图中col1,col2,col3的列都设为实体键。
这样可以避免一些问题,有时候列太多了,全设为实体键,不是一个好办法。
qt可以使用odbc驱动去连接sqlserver,先配置好odbc数据源,然后在qt里面调用数据源即可连接;