Qt数据库操作学习--登录,查找,删除

1 篇文章 0 订阅


环境: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);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值