首先向今天帮助我调试mysql的大哥@湖畔 同学致以诚挚的感谢
我今天本打算用qt链接mysql的,但是折腾了一天,看了网上各种教程,无论结果怎样都是QMYSQL not loaded。我还专程向csdn 大佬@湖畔同学进行了请教,他花费了宝贵的时间来无私帮助我调试代码,虽然还是失败了,但是我还是在这里表示衷心的感谢。
好了,下面来说说sql如何链接qt。
qt连接sql server 需要配置ODBC数据源
一、数据源配置
控制面板 → 管理工具 → ODBC 数据源
数据源名称自起(等会儿代码中会用到)。
服务器输入要连接服务器名称。
录入登录名,密码
选择要操作的数据库
完成
测试数据库能否连接,出现测试成功则说明可以链接。
测试代码
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include <QSqlQuery> #include <QSqlDatabase>
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow { Q_OBJECT
public: explicit MainWindow(QWidget *parent = 0); ~MainWindow();
private slots: void on_pushButton_clicked();
private: Ui::MainWindow *ui; QSqlDatabase db; };
#endif
|
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QtDebug> #include <QSqlQuery> #include <QSqlDatabase> #include <QSqlError>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); db = QSqlDatabase::addDatabase("QODBC"); db.setHostName("(local)"); QString dsn = QString::fromLocal8Bit("mytest"); db.setDatabaseName(dsn); db.setUserName("sa"); db.setPassword("superzhaoyang1"); on_pushButton_clicked(); }
MainWindow::~MainWindow() { delete ui; }
void MainWindow::on_pushButton_clicked() { if(!db.open()) { qDebug() << "database open faile!"; qDebug()<<db.lastError().text(); return; } else { qWarning()<<"database open success!"; }
QSqlQuery query(db); QString str = "delete from test where id = '111';//根据你的数据表对这句话进行修改 if(query.exec(str)) { qDebug()<<"delete sucess"; } else { qDebug()<<"faile"<<query.lastError(); } }
|
最后结果如下:
显示open success,并且id为“111”的内容确实被删除了。
(注:如果在登陆那里出现sql state:什么乱七八糟的,则在sql中的安全性-登录名-sa上右键属性,在常规中设置密码,并点击状态选择登陆启用;继而在服务器上右键属性的安全性中选择SQL SERVER和windows身份认证模式)
打开数据库——用Windows身份登录数据库
登录名——双击sa(打开属性)
常规——设置密码——确定
状态——登录:启用——确定
右击服务器名——属性
安全性——选中 SQL Server 和 Windows 身份验证模式——确
右击服务器名——重新启动——关闭数据库连接,退出程序——用sa登录到数据库——解决