QT 连接SQL SEVER 之后无法读取浮点和整型

1、ODBC Driver 的版本要对应上。

if (!strDbDirPath.isEmpty())
		m_strDbDirPath = strDbDirPath;

	m_strDatabaseName = strDatabaseName;

	if (m_database.isOpen() || m_bConnected)
	{
		qDebug() << QString("QODBC:已经连接成功!") << "\n";
		return m_database;
	}
	else
	{
		m_database = QSqlDatabase::addDatabase("QODBC");

		// 这里要注意ODBC Driver 17 版本要不然可能整型和读点数读取不到
		QString strConnect = QString("DRIVER={ODBC Driver 17 for SQL Server};"
			"SERVER=%1;" //服务器名称
			"DATABASE=%2;"//数据库名
			"UID=%3;"     //登录名
			"PWD=%4;"     //密码
		)
			.arg(strHostName)
			.arg(strDatabaseName)
			.arg(strUserName)
			.arg(strPassword);

		qDebug() << QString("QODBC:") << strConnect << "\n";

		m_database.setDatabaseName(strConnect);
		if (!m_database.open())
		{
			qDebug() << QString("QODBC:连接失败!") << "\n";
			QString strText = m_database.lastError().text();
			qDebug() << m_database.lastError().text();
		}
		else
		{
			qDebug() << QString("QODBC:连接成功!") << "\n";
			m_bConnected = true;
		}
	}

1、另外如果使用ODBC的连接方式,有可能是驱动问题,重新设置连接试试

2、另外发现这种直接连接的,执行SQL语句的时候经常异常奔溃,所以还是得使用下面的这种方式,如果遇到浮点或者整型读取不到的话,就换ODBC驱动方式。

#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
 
// ...
 
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); // 使用QODBC驱动连接SQL Server
db.setHostName("myServer"); // 服务器名或IP地址
db.setDatabaseName("myDatabase"); // 数据库名
db.setUserName("myUsername"); // 用户名
db.setPassword("myPassword"); // 密码
 
bool ok = db.open();
if(ok) {
    qDebug() << "数据库连接成功!";
    // 执行数据库操作...
} else {
    qDebug() << "数据库连接失败:" << db.lastError().text();
}
 
// ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的大海贼

联系博主,为您提供有价值的资源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值