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

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

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

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

1 SQLite类型

   正常代码:

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

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

   异常代码:

	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(“”)里要填写数据库的名称。

    QSqlDatabase dbData = QSqlDatabase::addDatabase("QODBC");
    dbData.setHostName("127.0.0.1");
    dbData.setDatabaseName("hello");  //数据库名称
    dbData.setUserName("user");
    dbData.setPassword("xxx");

最近更新

  1. TCP协议是安全的吗?

    2024-05-09 10:18:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-09 10:18:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-09 10:18:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-09 10:18:06       18 阅读

热门阅读

  1. Python机器翻译包Translate:多语种翻译利器

    2024-05-09 10:18:06       12 阅读
  2. c++ 点到多边形的距离

    2024-05-09 10:18:06       11 阅读
  3. AI学习指南高数篇-微分方程

    2024-05-09 10:18:06       11 阅读
  4. 前端每日基础day1

    2024-05-09 10:18:06       11 阅读
  5. vue3配置基础路径

    2024-05-09 10:18:06       11 阅读
  6. MySQL数据库失效:潜在场景、影响与应对策略

    2024-05-09 10:18:06       9 阅读
  7. js之dom学习

    2024-05-09 10:18:06       6 阅读
  8. 【代码随想录37期】Day01 二分查找 + 移除元素

    2024-05-09 10:18:06       9 阅读
  9. 离线安装dokcer&离线获取docker镜像

    2024-05-09 10:18:06       11 阅读