QSqlDatabase的数据库路径或名称问题

   在Qt的数据库编程中,先是设置数据库的类型,然后是设置数据库文件的路径,或者数据库名称。若有数据库的用户名、密码,则分别调用setUserName("")、setPassword("")来设置用户名和密码;若没有,则省略用户名和密码。

  • 通过QSqlDatabase::addDatabase("")来设置数据库的类型;
  • 通过setDatabaseName("")来设置数据库的文件路径,或者数据库名称。

   这个setDatabaseName("xxx.db")函数,对路径的依赖比较敏感。在Windows平台上,需要将路径的分割符号斜杠,要写成2个//斜杠。

1 SQLite类型

   正常代码:

cpp 复制代码
	QSqlDatabase dbData = QSqlDatabase::addDatabase("QSQLITE","UID1000");
	//数据库路径
	QString strPath = QCoreApplication::applicationDirPath() + "//hello.db";
	dbData.setDatabaseName(strPath);	

   注意在Windows平台上,若setDatabaseName("Path")里的Path是文件路径,则要写成双斜杠的形式;若写成单斜杠,会造成数据库可以打开,但无法查询,也无法插入的异常问题。

   异常代码:

cpp 复制代码
	QSqlDatabase dbData = QSqlDatabase::addDatabase("QSQLITE","UID1000");
	//单斜杠,在Windows平台上,会造成数据库可以连接,但无法查询表中数据的Bug
	QString strPath = "D:/myDatabase/hello.db";
	dbData.setDatabaseName(strPath);

2 SQL Server类型

   若SQL Server是以ODBC的方式与Qt程序进行连接,则setDatabaseName("")里要填写数据库的名称。

cpp 复制代码
    QSqlDatabase dbData = QSqlDatabase::addDatabase("QODBC");
    dbData.setHostName("127.0.0.1");
    dbData.setDatabaseName("hello");  //数据库名称
    dbData.setUserName("user");
    dbData.setPassword("xxx");
相关推荐
秋田君5 小时前
QT_QT布局详解
开发语言·数据库·qt
可乐ea6 小时前
【Redis八股|第8篇】Redis 分布式锁原理与 Redisson 使用
数据库·redis·分布式·面试题·redis八股
ClouGence7 小时前
Oracle 到 OceanBase 迁移方案横评:停机导出/导入 vs OMS vs CDC 工具
数据库·oracle
Meya11277 小时前
不同规模机房怎么选 U 位系统?8 柜小型机房、40 柜数据中心完整选型参考
服务器·网络·数据库
从此以后自律8 小时前
MySQL 删除数据全方式详解
数据库·mysql
青山木9 小时前
Redis 高可用的最后一公里:Cluster 分片、Gossip 与故障转移全流程
数据库·redis·后端·缓存
蓝胖的四次元口袋9 小时前
JavaString知识梳理
数据库·oracle
csdn_aspnet10 小时前
mysql 使用逗号拼接一列数据
数据库·mysql·group_concat
9523610 小时前
Redis - 基本操作
数据库·redis·spring·缓存
大师兄666810 小时前
HarmonyOS7 数据持久化 relationalStore:数据库实战
数据库·arkui·实战案例·harmonyos7