当前位置: 首页 > news >正文

南京定制网站哪个好巨量算数数据分析入口

南京定制网站哪个好,巨量算数数据分析入口,购买完域名后怎么做网站,电商网站设计公司皆选亿企邦本篇总结一下一下Ubuntu下QT操作Mysql数据库。 目录 1. 启动Mysql数据库服务器 2.查看QT支持的数据库驱动 3.连接数据库 4. 增加表和记录 5. 删除记录 6. 修改记录 7. 查询记录 8.完整代码和运行效果 常见错误总结: (1) 数据库服务没启动报错信息 (2) 有…

本篇总结一下一下Ubuntu下QT操作Mysql数据库。

目录

1. 启动Mysql数据库服务器

2.查看QT支持的数据库驱动

3.连接数据库

4. 增加表和记录

5. 删除记录

6. 修改记录

7. 查询记录

8.完整代码和运行效果

常见错误总结:

(1) 数据库服务没启动报错信息

(2) 有QMYSQL驱动,连接数据缺失败


1. 启动Mysql数据库服务器

// 启动

sudo /etc/init.d/mysql start

// 重启

sudo /etc/init.d/mysql restart

// 关闭

sudo /etc/init.d/mysql stop

2.查看QT支持的数据库驱动

Qt SQL模块是Qt提供的一个访问数据库的接口,支持多种平台下使用不同类型的数据库,在这个过程中,数据库驱动起到了很大的作用,它负责与不同的数据库进行通信,有了数据库驱动,我们才能使用不同类型的数据库。

#include <QtSql/QSqlDatabase>// 查看支持的数据库驱动
qDebug() << QSqlDatabase::drivers();

3.连接数据库

QSqlDatabase db;
if(QSqlDatabase::contains("qt_sql_default_connection")) {db = QSqlDatabase::database("qt_sql_default_connection");
}
else {// 创建一个数据库连接,指定数据库驱动db = QSqlDatabase::addDatabase("QMYSQL");
}// 数据库连接需要设置的信息
db.setHostName("127.0.0.1"); // 数据库服务器IP,我用的是本地电脑
db.setDatabaseName("TestDB");// 数据库名
db.setUserName("root");// 用户名
db.setPassword("mysql");// 密码
db.setPort(3306);// 端口号// 连接数据库
bool ok = db.open();if (ok) {qDebug() << "连接成功";
}
else {qDebug() << "连接失败";
}

4. 增加表和记录

// 实例化QSqlQuery,用于执行sql语句
QSqlQuery query(m_db);
// 创建一个表
query.exec("create table newUser (id int primary key, username varchar(20))");
QSqlQuery query(m_db);
query.exec("INSERT INTO newUser (id, username) VALUES (1, 'Hello')");int userid = 2;
QString &&name = "张三";
query.prepare("INSERT INTO newUser (id, username) VALUES (:id, :username)");
query.bindValue(":id", userid);
query.bindValue(":username", name);
query.exec();query.exec("INSERT INTO newUser (id, username) VALUES (3, 'Andy')");
query.exec("INSERT INTO newUser (id, username) VALUES (4, '李四')");

5. 删除记录

QSqlQuery query(m_db);
query.prepare("DELETE FROM newUser WHERE username=:username");
query.bindValue(":username", "张三");
query.exec();

6. 修改记录

QSqlQuery query(m_db);
query.prepare("update newUser set username=:username WHERE id=:id");
query.bindValue(":id", 1);
query.bindValue(":username", "World");
query.exec();

7. 查询记录

  // 查询所有QString sql = "SELECT id, username FROM newUser" ; // 组装sql语句QSqlQuery query(m_db);                               // [1] 传入数据库连接query.exec(sql);                                   // [2] 执行sql语句while (query.next()) {                             // [3] 遍历查询结果qDebug() << QString("Id: %1, Username: %2").arg(query.value("id").toInt()).arg(query.value("username").toString());}// 查询指定记录QString username = "李四";sql = "SELECT * FROM newUser WHERE username='" + username + "'";query.exec(sql);        // [2] 执行sql语句while (query.next()) {  // [3] 遍历查询结果qDebug() << QString("Id: %1, Username: %2").arg(query.value("id").toInt()).arg(query.value("username").toString());}// 绑定数据查询username = "张三";sql = "SELECT * FROM newUser WHERE username=:username";query.prepare(sql);                     // [2] 使用名称绑定的方式解析 SQL 语句query.bindValue(":username", username); // [3] 把占位符替换为传入的参数query.exec();                           // [4] 执行数据库操作while (query.next()) {                  // [5] 遍历查询结果qDebug() << QString("Id: %1, Username: %2").arg(query.value("id").toInt()).arg(query.value("username").toString());}

8.完整代码和运行效果

qt_mysql.pro

#-------------------------------------------------
#
# Project created by QtCreator 2023-09-05T23:12:20
#
#-------------------------------------------------QT       += core gui
QT += sqlgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = qt_mysql
TEMPLATE = app# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \mainwindow.cppHEADERS += \mainwindow.hFORMS += \mainwindow.ui

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QtSql/QSqlDatabase>
#include <QDebug>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();void on_pushButton_7_clicked();void on_pushButton_clear_table_clicked();private:void createConnectionByName(const QString &connectionName); //使用自定义 connectionName 创建连接QSqlDatabase getConnectionByName(const QString &connectionName);  // 使用自定义 connectionName 获取连接private:Ui::MainWindow *ui;QSqlDatabase m_db;
};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlQuery>/*
Qt SQL模块是Qt提供的一个访问数据库的接口,支持多种平台下使用不同类型的数据库,在这个过程中,
数据库驱动起到了很大的作用,它负责与不同的数据库进行通信,有了数据库驱动,我们才能使用不同类型的数据库。*/MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建名为 firstMysqlConnect 的数据库连接createConnectionByName("firstMysqlConnect");
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{// 查看支持的数据库驱动qDebug() << QSqlDatabase::drivers();
}//使用自定义 connectionName 创建连接
void MainWindow::createConnectionByName(const QString &connectionName){m_db = QSqlDatabase::addDatabase("QMYSQL", connectionName);// 数据库连接需要设置的信息m_db.setHostName("127.0.0.1"); // 数据库服务器IP,我用的是本地电脑m_db.setDatabaseName("TestDB");// 数据库名m_db.setUserName("root");// 用户名m_db.setPassword("mysql");// 密码m_db.setPort(3306);// 端口号// 连接数据库判断bool ok = m_db.open();if (ok){qDebug() << "连接成功";} else {qDebug() << "连接失败";}}// 使用自定义 connectionName 获取连接
QSqlDatabase MainWindow::getConnectionByName(const QString &connectionName) {// 获取数据库连接return QSqlDatabase::database(connectionName);
}void MainWindow::on_pushButton_2_clicked()
{QSqlDatabase db;if(QSqlDatabase::contains("qt_sql_default_connection")) {db = QSqlDatabase::database("qt_sql_default_connection");}else {// 创建一个数据库连接,指定数据库驱动db = QSqlDatabase::addDatabase("QMYSQL");}// 数据库连接需要设置的信息db.setHostName("127.0.0.1"); // 数据库服务器IP,我用的是本地电脑db.setDatabaseName("TestDB");// 数据库名db.setUserName("root");// 用户名db.setPassword("mysql");// 密码db.setPort(3306);// 端口号// 连接数据库bool ok = db.open();if (ok) {qDebug() << "连接成功";}else {qDebug() << "连接失败";}
}void MainWindow::on_pushButton_3_clicked()
{// 实例化QSqlQuery,用于执行sql语句QSqlQuery query(m_db);// 创建一个表query.exec("create table newUser (id int primary key, username varchar(20))");
}void MainWindow::on_pushButton_4_clicked()
{QSqlQuery query(m_db);query.exec("INSERT INTO newUser (id, username) VALUES (1, 'Hello')");int userid = 2;QString &&name = "张三";query.prepare("INSERT INTO newUser (id, username) VALUES (:id, :username)");query.bindValue(":id", userid);query.bindValue(":username", name);query.exec();query.exec("INSERT INTO newUser (id, username) VALUES (3, 'Andy')");query.exec("INSERT INTO newUser (id, username) VALUES (4, '李四')");
}void MainWindow::on_pushButton_5_clicked()
{QSqlQuery query(m_db);query.prepare("DELETE FROM newUser WHERE username=:username");query.bindValue(":username", "张三");query.exec();
}void MainWindow::on_pushButton_6_clicked()
{QSqlQuery query(m_db);query.prepare("update newUser set username=:username WHERE id=:id");query.bindValue(":id", 1);query.bindValue(":username", "World");query.exec();
}void MainWindow::on_pushButton_7_clicked()
{// 查询所有QString sql = "SELECT id, username FROM newUser" ; // 组装sql语句QSqlQuery query(m_db);                               // [1] 传入数据库连接query.exec(sql);                                   // [2] 执行sql语句while (query.next()) {                             // [3] 遍历查询结果qDebug() << QString("Id: %1, Username: %2").arg(query.value("id").toInt()).arg(query.value("username").toString());}// 查询指定记录QString username = "李四";sql = "SELECT * FROM newUser WHERE username='" + username + "'";query.exec(sql);        // [2] 执行sql语句while (query.next()) {  // [3] 遍历查询结果qDebug() << QString("Id: %1, Username: %2").arg(query.value("id").toInt()).arg(query.value("username").toString());}// 绑定数据查询username = "张三";sql = "SELECT * FROM newUser WHERE username=:username";query.prepare(sql);                     // [2] 使用名称绑定的方式解析 SQL 语句query.bindValue(":username", username); // [3] 把占位符替换为传入的参数query.exec();                           // [4] 执行数据库操作while (query.next()) {                  // [5] 遍历查询结果qDebug() << QString("Id: %1, Username: %2").arg(query.value("id").toInt()).arg(query.value("username").toString());}
}void MainWindow::on_pushButton_clear_table_clicked()
{QSqlQuery query(m_db);query.exec("DELETE FROM newUser");
}

main.cpp

#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>693</width><height>412</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralWidget"><layout class="QGridLayout" name="gridLayout"><item row="0" column="0"><widget class="QPushButton" name="pushButton"><property name="text"><string>查看数据库驱动</string></property></widget></item><item row="0" column="1"><widget class="QPushButton" name="pushButton_2"><property name="text"><string>连接mysql数据库</string></property></widget></item><item row="1" column="0"><widget class="QPushButton" name="pushButton_3"><property name="text"><string>创建表</string></property></widget></item><item row="1" column="1"><widget class="QPushButton" name="pushButton_4"><property name="text"><string>插入记录</string></property></widget></item><item row="2" column="0"><widget class="QPushButton" name="pushButton_5"><property name="text"><string>删除记录</string></property></widget></item><item row="2" column="1"><widget class="QPushButton" name="pushButton_6"><property name="text"><string>修改记录</string></property></widget></item><item row="3" column="0"><widget class="QPushButton" name="pushButton_7"><property name="text"><string>查询记录</string></property></widget></item><item row="3" column="1"><widget class="QPushButton" name="pushButton_clear_table"><property name="text"><string>删除表中所有数据</string></property></widget></item></layout></widget><widget class="QMenuBar" name="menuBar"><property name="geometry"><rect><x>0</x><y>0</y><width>693</width><height>39</height></rect></property></widget><widget class="QToolBar" name="mainToolBar"><attribute name="toolBarArea"><enum>TopToolBarArea</enum></attribute><attribute name="toolBarBreak"><bool>false</bool></attribute></widget><widget class="QStatusBar" name="statusBar"/></widget><layoutdefault spacing="6" margin="11"/><resources/><connections/>
</ui>

常见错误总结:

(1) 数据库服务没启动报错信息

(2) 有QMYSQL驱动,连接数据缺失败

原因:Qt对Mysql进行了封装,库名为libqsqlmysql.so,但是其还需要调用Mysql的客户端库才能真正连接数据库,如下可以看到libqsqlmysql.so需要依赖libmysqlclient.so.18。


文章转载自:
http://wanjiaclarisse.sqxr.cn
http://wanjiamartinique.sqxr.cn
http://wanjiabreastpin.sqxr.cn
http://wanjiapinealectomy.sqxr.cn
http://wanjiasmalti.sqxr.cn
http://wanjiadopehead.sqxr.cn
http://wanjiarodster.sqxr.cn
http://wanjiaquantophrenia.sqxr.cn
http://wanjiaaerodontia.sqxr.cn
http://wanjiasimplicidentate.sqxr.cn
http://wanjianourishment.sqxr.cn
http://wanjiapinger.sqxr.cn
http://wanjiaslimline.sqxr.cn
http://wanjiafrass.sqxr.cn
http://wanjiacathodal.sqxr.cn
http://wanjialipsalve.sqxr.cn
http://wanjiaautumn.sqxr.cn
http://wanjiarapturousness.sqxr.cn
http://wanjiatachisme.sqxr.cn
http://wanjiapilule.sqxr.cn
http://wanjiapreludio.sqxr.cn
http://wanjiafrancophobe.sqxr.cn
http://wanjialanzhou.sqxr.cn
http://wanjiasapremia.sqxr.cn
http://wanjiagct.sqxr.cn
http://wanjiacrissum.sqxr.cn
http://wanjiawildwind.sqxr.cn
http://wanjiatestibiopalladite.sqxr.cn
http://wanjiamoa.sqxr.cn
http://wanjiagerardia.sqxr.cn
http://wanjiaformulation.sqxr.cn
http://wanjiabigoted.sqxr.cn
http://wanjiabullionist.sqxr.cn
http://wanjiapain.sqxr.cn
http://wanjiarumansh.sqxr.cn
http://wanjiasprightliness.sqxr.cn
http://wanjiaboxy.sqxr.cn
http://wanjiape.sqxr.cn
http://wanjiasuperfatted.sqxr.cn
http://wanjiaindiscretionary.sqxr.cn
http://wanjiafarinha.sqxr.cn
http://wanjiahalogeton.sqxr.cn
http://wanjiasomnambulant.sqxr.cn
http://wanjiaspessartite.sqxr.cn
http://wanjiabuckwheat.sqxr.cn
http://wanjiatouching.sqxr.cn
http://wanjiadatival.sqxr.cn
http://wanjiaassimilate.sqxr.cn
http://wanjiaundertread.sqxr.cn
http://wanjiaappeaser.sqxr.cn
http://wanjiaelectronystagmography.sqxr.cn
http://wanjiaupbuilt.sqxr.cn
http://wanjiacalla.sqxr.cn
http://wanjiaduration.sqxr.cn
http://wanjiacolossians.sqxr.cn
http://wanjiablastomycete.sqxr.cn
http://wanjiacheliferous.sqxr.cn
http://wanjiapromine.sqxr.cn
http://wanjiamaidenhair.sqxr.cn
http://wanjiavinca.sqxr.cn
http://wanjiaofftake.sqxr.cn
http://wanjiaparamagnetic.sqxr.cn
http://wanjiafrequentation.sqxr.cn
http://wanjiacuttlebone.sqxr.cn
http://wanjiafrig.sqxr.cn
http://wanjiapatteran.sqxr.cn
http://wanjiainsurmountable.sqxr.cn
http://wanjiaorthographer.sqxr.cn
http://wanjiapolysyllable.sqxr.cn
http://wanjiaarbitrarily.sqxr.cn
http://wanjiasynsepalous.sqxr.cn
http://wanjiaaymaran.sqxr.cn
http://wanjiapicasso.sqxr.cn
http://wanjiacalculably.sqxr.cn
http://wanjiauptorn.sqxr.cn
http://wanjiadicot.sqxr.cn
http://wanjianeutrophil.sqxr.cn
http://wanjiaimplacability.sqxr.cn
http://wanjiagrandad.sqxr.cn
http://wanjiarubenesque.sqxr.cn
http://www.15wanjia.com/news/127281.html

相关文章:

  • 做软件与做网站建设有什么区别关键词是什么
  • wordpress插件根目录北京seo网站管理
  • 新疆石油工程建设监理有限责任公司网站海洋seo
  • 金坛做网站网络推广平台都有哪些
  • 网站开发甘特图江小白网络营销案例
  • 怎么用自己主机做网站_百度地图客服人工电话
  • 威海哪里可以建设企业网站深圳网站优化推广
  • 广州建设公司平台对网站的建议和优化
  • 吉林大学建设工程学院官方网站照片查询百度图片搜索
  • 中小学网站建设网络营销的方法有哪些
  • 做网站网页的公司上海全网营销推广
  • 做 cad效果图网站虞城seo代理地址
  • 济南快速网站制作公司广东搜索引擎优化
  • 重庆万州网站建设搜索词排行榜
  • 投诉网站建设推广平台排名
  • 直接登录的网站竞价托管服务多少钱
  • 做暧电影在线观看网站西安seo排名外包
  • 公司网站制作与维护黄冈seo
  • 网站制作报价表最近热搜新闻事件
  • 做网站的要多钱百度搜索入口官网
  • 在线做gif图网站seo排名优化收费
  • 东莞网络推广外包广州抖音seo
  • 智慧团建入口登录网站附近广告公司联系电话
  • wordpress now嘉兴seo外包
  • wordpress摘要 字数厦门seo关键词排名
  • 东莞网站建设是什么意思超云seo优化
  • 咖啡商城网页设计代码模板网站优化策划书
  • 学生做资料赚钱网站杭州上城区抖音seo有多好
  • 做课件的软件下载带有蓝色的网站网站seo怎么做
  • 中电云主机怎样登入创建的网站网络营销有哪些