QSqlDatabase::open() 总是返回 true

2023-12-28

我正在尝试使用 Qt 框架连接到 SQL 数据库。

不幸的是,尽管没有建立连接(?),db.open()总是返回true(您可以设置任何密码,主机名等...)。我从对数据库没有任何影响的查询中得出这一点。

我在 Ubuntu 14.04 上使用 LAMPP。

我有以下代码:

#include "mainwindow.h"
#include "ui_mainwindow.h" 
#include <QApplication>
#include <QSql>
#include <QSqlDatabase>
#include <QMessageBox>
#include <QSqlQuery>


void MainWindow::on_ButtonSQL_clicked()
{

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "con1");
    db.setHostName("localhost");
    db.setDatabaseName("kinectshop2015");
    db.setUserName("root");
    db.setPassword("");

    QMessageBox msgBox;

    if (db.open()) {
        msgBox.setText("Yay! Your database host is "+db.hostName()+" .\n"+" The name of the database is "+db.databaseName()+".");
        msgBox.exec();
    }

    QSqlQuery query;
    query.exec("INSERT INTO users (id, username, balance, isAdmin)" "VALUES(3, 'somebody', 10000, 1)");
}

一个问题是您指定了一个连接名称。

QSqlDatabase QSqlDatabase::addDatabase(const QString & type, const QString & connectionName = QLatin1String( defaultConnection ))

如果未指定connectionName,则新连接将成为默认连接

鉴于您的数据库连接不是默认连接,您需要告诉 QSqlQuery 要使用哪个数据库,即

  QSqlQuery query(db);
  query.exec("INSERT INTO users (id, username, balance, isAdmin)" "VALUES(3, 'somebody', 10000, 1)");

另一个“问题”是,使用 sqlite,您总是通过所进行的调用创建一个新数据库,因此问题不是数据库未打开,而是其内容不正确(因为如果您指定一个数据库,它将为空)不存在的文件名)。如果我接受你的代码并添加

   qDebug() << query.lastError();

之后query.exec它正确地抱怨说

QSqlError(1, "无法执行语句", "没有这样的表:用户")

如果我在插入查询之前包含一条创建表的语句

QSqlQuery createTable("create table users ( id INTEGER, username TEXT, balance REAL, isAdmin INTEGER)",db);
createTable.exec();

我正确地获取了新创建的数据库文件中的表,并且它包含您尝试插入的条目。

这有帮助吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QSqlDatabase::open() 总是返回 true 的相关文章

  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 是否有适用于所有数据库的标准sql

    如下所示 不同数据库的语法有所不同 是否存在适用于所有数据库的标准方法 有没有什么工具可以将任意sql转换为任意sql SQL Server 2005 CREATE TABLE Table01 Field01 int primary key
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 在 VB 脚本中显示下拉/组合框

    我正在尝试在 VB 脚本中创建一个下拉 组合框 根据我的理解 我们需要为 Internet Explorer 创建一个实例并创建一个下拉 组合框 如下所示 set oIE createObject InternetExplorer Appl
  • 将累积平均函数应用于分组对象

    我有一个数据框df其中每条记录代表一场足球比赛 团队将多次出现 我需要计算每个团队得分的某种滚动平均值 嗯 不完全是字母上的滚动平均值 date home away score h score a 166 2013 09 01 Fulham
  • 代码优先 - 当我没有将父对象设置为 EntityState.Modified 时,如何保存 ICollection?

    如果我有以下课程 public class Foo public int PropertyIWantUpdated get set public int PropertyIDontWantUpdated get set public ICo
  • JMeter 不会从 CSV 文件中读取引用的 CSV 列表

    使用 JMeter 支持功能 API 测试 并遇到了从 CSV 文件读取数据的问题 文件中的数据用于构建 POST 数据体 其中包含如下内容 wibbles wibble var wibble var 从 CSV 文件读取 格式如下 wib
  • Python + GTK:如何在 gtk.treeview 上设置选定行

    I m trying to do a keyboard command When I insert S some number Return I need call a function that will see this number
  • iPhone 的 JavaScript 默认值?

    iPhone 或 iPad 上 Safari 的 JavaScript 默认值是什么 我的意思是 safari 是否默认打开或关闭 javascript 如果它关闭 那么是否可以通过编程方式更改该设置 谢谢 默认情况下启用 JavaScri
  • Eclipse Juno 图形错误?

    我一直在谷歌上寻找解决方案 但我什至不知道应该使用哪些词来找到它 无论如何 我的问题是 Eclipse 在 Linux Mint 14 x64 中看起来像这样 https i stack imgur com BBfyg png https
  • 如何正确捕获 SqlException:发生传输级错误

    我正在得到一个SqlException在 NET 3 5应用程序的日志中 我正在寻找相应的数字 属性值SqlException Number System Data SqlClient SqlException A transport le
  • MVC 具有继承、嵌套 viewModel 和部分视图的复杂模型绑定

    我无法将嵌套模型的值返回到控制器 它们都是空的 这是简化的架构 The viewModel being passed to the view public class RunnerIndexViewModel public Register
  • Angular 路由、直接 URL 导航

    我在我的上定义了一个角度应用程序index html文件 使用角度路由我正在路由一个名为 erez加载带有模板的视图 它在应用程序内部工作 当我单击链接时 erez从导航栏上index html它工作完美 但是当我在地址栏上直接访问 my
  • BASH - 在 shell 脚本上获取 UID 不起作用[重复]

    这个问题在这里已经有答案了 你好 我有一个关于 bash 的问题 我是新手 我制作了一个名为 test sh 的文件 其内容是 bin bash set x echo UID echo UID echo id u 结果是空白的 什么也没有出
  • java远程执行批处理文件

    我想执行位于服务器远程的bat文件 testserver someFolderName test bat 我正在使用进程生成器并想更改目录procbuilder directory 但未能成功 任何帮助表示赞赏 谢谢 过去我做得又快又脏PS
  • PARTITION BY 在 H2 数据库中不起作用

    我正在使用 PARTITION BY 子句对结果进行排序 这个问题提到了使用 PARTITION BY 的详细信息Sql 对多列进行排序 https stackoverflow com questions 13897024 sql orde
  • R 的 mtcars 数据集中的第一列是什么?

    我认为我缺少有关 R 数据框架的基本概念 head mtcars mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21 0 6 160 110 3 90 2 620 16 46
  • 如何使用导入包的结构作为 go 中的类型

    我正在一个项目中工作并在 go 中使用 database sql 包 我想使用在包 database sql 中声明的结构 DB 作为我的 func 的参数 这样我就可以使用 sql Open 的返回值并作为我的 func 的参数 有可能吗
  • 与 2017 年智能感知不工作 C# 和 XAML

    我有一个奇怪的问题 我似乎无法解决 我的 XAML 智能感知不再显示 并且后面的代码仅显示预制成员 我所做的类和方法没有出现 此外 Visual Studios 无法识别其他页面 也无法识别导航 我尝试转到 工具 gt 文本编辑器 gt C
  • C# SqlCommand Connection.Open() 问题

    我有一个 C ASP NET Web 应用程序 我正在尝试使用数据库表中的列填充 ASP DropDownList My Code using System using System Collections Generic using Sy
  • Android Studio - 如何更改布局

    在 Eclipse 中 我可以右键单击我的布局 例如 LinearLayout 然后单击 更改布局 在 Android Studio 中 我没有看到类似的东西 我确实看到了变形 但现在它会随时出现 例如 如果您使用RelativeLayou
  • Windows 上的 Nginx 使用 WSGI

    现在我决定使用 Nginx 作为我最喜欢的网络服务器来部署 Django 我得到了一些 迷雾 我在 Windows 上 也就是说 当我尝试使用 Django 作为 FastCGI 时出现错误 似乎 Flup 无法加载 它给我错误 从网站上看
  • QSqlDatabase::open() 总是返回 true

    我正在尝试使用 Qt 框架连接到 SQL 数据库 不幸的是 尽管没有建立连接 db open 总是返回true 您可以设置任何密码 主机名等 我从对数据库没有任何影响的查询中得出这一点 我在 Ubuntu 14 04 上使用 LAMPP 我