找回密码
 立即注册
收起左侧

QT中使用LineEdit给数据库添加数据的问题

2
回复
9941
查看
[复制链接]
累计签到:22 天
连续签到:1 天
来源: 2018-10-10 21:28:57 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 sdustzk 于 2018-10-10 21:36 编辑

小可新手一枚,在《Qt快速入门系列教程》中刚刚学到数据库操作这里,按教程上写的编写了一个简单的操作。
主界面带一个子窗口,共同显示一个数据库的内容。现在想实现利用子窗口的lineEdit给数据库添加数据,请教各位大神怎么操作。
文件有这些:

窗口界面如图:


connection.h
#ifndef CONNECTION_H#define CONNECTION_H
#include <QSqlDatabase>
#include <QSqlQuery>
static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("database.db");
    if(!db.open())
       return false;
    QSqlQuery query;
    query.exec("create table shangpinziliao (spcode int primary key, spname vchar)");
    query.exec("insert into shangpinziliao values(21010101,'青岛啤酒')");
   return true;}
#endif // CONNECTION_H
---------------------------------------------------------------------------------------------------------------
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QSqlTableModel>
#include <QMainWindow>
#include "newdb.h"
namespace Ui {class MainWindow;}
class MainWindow :
public QMainWindow
{    Q_OBJECT
public:    explicit
MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void on_newwinBtn_clicked();
private:
   Ui::MainWindow *ui;
    QSqlTableModel *model;
    newdb newdb;};
#endif // MAINWINDOW_H
-----------------------------------------------------------------------------------
newdb.h
#ifndef NEWDB_H
#define NEWDB_H


#include <QDialog>
#include <QSqlTableModel>


namespace Ui {
class newdb;
}


class newdb : public QDialog
{
    Q_OBJECT


public:
    explicit newdb(QWidget *parent = 0);
    ~newdb();
private slots:
    void on_addBtn_clicked();
private:
    Ui::newdb *ui;
    QSqlTableModel *model;
};


#endif // NEWDB_H

---------------------------------------------------------------------
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include "connection.h"
int main(int argc, char *argv[])
{   
QApplication a(argc, argv);
    if(!createConnection())
        return 1;
    MainWindow w;
    w.show();
    return a.exec();}
------------------------------------------------
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    model = new QSqlTableModel(this);
   model->setTable("shangpinziliao");
    model->select();
  ui->tableView->setModel(model);
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_newwinBtn_clicked()
{
    newdb.show();
    newdb.exec();
    this->show();
}
-----------------------------------------------
newdb.cpp
#include "newdb.h"
#include "ui_newdb.h"
#include "connection.h"
#include "QSqlQuery"
newdb::newdb(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::newdb)
{
    ui->setupUi(this);
    model = new QSqlTableModel(this);
    model->setTable("shangpinziliao");
    model->select();
   ui->dbtableView->setModel(model);}newdb::~newdb()
{
    delete ui;
}
-------------------------------------------------
写到这里,怎么利用子窗口的LineEdit给数据库添加数据,请大神指教。


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

这个写成这样基本可以了,但是项目文件不全,不好看,如果有时间,可以加一下这个萌新群,可以帮你你远程调试这个代码,加油~ 点击链接加入群聊【Qt 萌新】:https://jq.qq.com/?_wv=1027&k=5Pc91u8
回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2018-10-10 21:28:58 显示全部楼层
这个写成这样基本可以了,但是项目文件不全,不好看,如果有时间,可以加一下这个萌新群,可以帮你你远程调试这个代码,加油~
点击链接加入群聊【Qt 萌新】:https://jq.qq.com/?_wv=1027&k=5Pc91u8
回复

使用道具 举报

累计签到:22 天
连续签到:1 天
2018-10-12 15:40:32 显示全部楼层
问题已经解决,方法如下:
         
           QSqlQuery query;
           QSqlRecord record=model->record();
           record.setValue("ghscode",b0);
           //record.setValue("ghscode",this->ui->gyscodelineEdit->text());//直接获取文本框内容给record
           record.setValue("ghsname",this->ui->gysnamelineEdit->text());
           model->insertRecord(-1,record);//在表格最后插入数据
           model->submitAll();//提交内容
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了