重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
前提:
创新互联公司网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为成都网站建设、成都做网站,重庆APP开发公司以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。创新互联公司深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
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. 看看运行结果吧。
参考网址:
qt可以使用odbc驱动去连接sqlserver,先配置好odbc数据源,然后在qt里面调用数据源即可连接;
qtsqlquery查询出来的条数和sqlserver不一致的原因就在于实体对象中的Key列即列1的值相同(在我们的例子中都为1)。
为了避免错误的结果,可以把把视图中col1,col2,col3的列都设为实体键。
这样可以避免一些问题,有时候列太多了,全设为实体键,不是一个好办法。