环境:VS2008+Qt4.7 Sqlserver
QT += sql//pro文件中添加此句
查询QT是否装有数据库驱动
在main.cpp函数中添加以下代码即可查询Qt是否有数据库驱动
// 查询是否有数据库驱动
void Is_Has_Driver()
{
qDebug()<<"available driver:";
QStringList drivers=QSqlDatabase::drivers();
foreach(QString driver,drivers)
qDebug()<<"/t"<<driver;
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC3");
qDebug()<<"ODBC driver?"<<db.isValid();
}
登录数据库
QSqlDatabase db;
读取udl文件登录数据库
//读取udl文件连接数据库
QString fileName;
fileName = QCoreApplication::applicationDirPath();
fileName += "/mydata.udl";
QStringList udlList;
QFile udl(fileName);
if (udl.open(QFile::ReadOnly | QFile::Truncate))
{
QTextStream inUdltream(&udl);
QString line = inUdltream.readLine();
while (!line.isNull())
{
udlList.append(line);
line = inUdltream.readLine();
}
}
udl.close();
QMap<QString,QString> map;
if (udlList.size()==3)
{
QString str = udlList.at(2);
QStringList strlist = str.split(";");
for (int i = 0 ;i< strlist.size();i++)
{
QString pos= strlist.at(i);
QStringList posList =pos.split("=");
if (posList.size() == 2)
{
map.insert(posList.at(0),posList.at(1));
}
}
}
// 设置数据库
QString Security = map["Persist Security Info"];
QString name = map["User ID"];
QString password = map["Password"];
QString server = map["Data Source"];
QString DATABASE = map["Initial Catalog"];
db = QSqlDatabase::addDatabase("QODBC","frist");
QString dsn = QString("DRIVER={SQL SERVER};Driver=SQL Server;server=%1,1433;DATABASE=%2").arg(server).arg(DATABASE);
if (Security == "True")
{
dsn = QString("DRIVER={SQL SERVER};Driver=SQL Server;server=%1,1433;UID=%2;PWD=%3;DATABASE=%4").arg(server).arg(name).arg(password).arg(DATABASE);
}
db.setDatabaseName(dsn);
// 打开数据库
if(!db.open())
{
QMessageBox::information(NULL,"Connect",QObject::tr("Connect database failed,please try again"));
this->close();
}
数据源方式登录数据库
//数据源方式连接
db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("DESKTOP-H7TEI5V\SQLEXPRESS");//服务器名
db.setDatabaseName("ms_dsn");//数据源名
if(!db.open())
{
QMessageBox::information(NULL,"Connect",QObject::tr("Connect database failed,please try again"));
this->close();
}
添加ODBC数据源方法(转载自 努力做最好的自己)
https://blog.csdn.net/qiushisoftware/article/details/17188467
操作数据库
QT操作数据库语句
//伪
QSqlQuery query(db);//db:自己定义的数据库变量名
query.exec(sql执行语句);
基本操作实例:
// 保存整个数据库的数据
QSqlQuery query(db);
query.exec("SELECT * FROM MS_EVENT ");
while(query.next())
{
QString ID = query.value(0).toString();
QString UserName = query.value(1).toString();
QString Time = query.value(2).toString();
QString EventType = query.value(3).toString();
QString EventInfo = query.value(4).toString();
QString JobName = query.value(5).toString();
}
// 根据ID删除表中数据
QString sql = QString("DELETE FROM MS_EVENT WHERE id = ") + ID;
QSqlQuery query(db);
query.exec(sql);
// 根据UserName查找表中数据(可模糊查找)
sql = QString("SELECT * FROM MS_EVENT WHERE UserName like ") + "'" + OperaterName + "%'";
QSqlQuery query(db);
query.exec(sql);