С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 15.03.2019
Сообщений: 174
1

sql создание нового пользователя и переноса базы данных

12.04.2020, 20:51. Показов 958. Ответов 5
Метки c++, qt, sql (Все метки)

Author24 — интернет-сервис помощи студентам
я хочу создать нового пользователя и базу данных, чтобы пользователь его мог вводить в поля lineedit, помогите пожалуйста, вот что сообразил, помогите пожалуйста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define Name "*"
#define base "*"
#define parol "*"
 
   base + ui->base1->text();
    Name +ui->login->text();
     parol +ui->parol1->text();
   query.exec("CREATE DATABASE " base ");
   if(!query.exec()){
                 qDebug() << "error base  ";
                 qDebug() << query.lastError().text();
   }
    query.exec("CREATE USER" Name "WITH ENCRYPTED PASSWORD '" parol "';"
                         "GRANT ALL PRIVILEGES ON DATABASE " base " TO " Name);
   if(!query.exec()){
                 qDebug() << "error user";
                 qDebug() << query.lastError().text();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2020, 20:51
Ответы с готовыми решениями:

Создание пустой базы данных и импорт данных в sql server 2000
Установила sql server 2000 home edition на локальный компьютер. Стоят три вопроса. Первое это как...

Создание набора данных .xsd на основе сохраненного дампа базы данных MS SQL
Привет всем! У меня есть текстовый файл - дамп (если правильно выражаюсь) базы данных с...

Создание базы данных SQL
Люди подскажите как программно с помощью метода CREATE можно создать базы данных и если можно...

Создание базы данных SQL Server из C#
Подскажите. Как создать базу данных в sql server программно, с помощью с#. Нужно при нажатии на...

5
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
12.04.2020, 21:51 2
Для чего здесь define?
0
1 / 1 / 0
Регистрация: 15.03.2019
Сообщений: 174
12.04.2020, 22:01  [ТС] 3
я хочу понять как базу, логин и пароль вести в lineedit
Миниатюры
sql создание нового пользователя и переноса базы данных  
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
12.04.2020, 23:02 4
Справку по QSqlQuery открой. Там есть примеры с prepare() и bindValue().
1
67 / 43 / 17
Регистрация: 10.02.2016
Сообщений: 137
13.04.2020, 08:52 5
connectionsettingdialog.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef CONNECTIONSETTINGDIALOG_H
#define CONNECTIONSETTINGDIALOG_H
 
#include <QDialog>
 
namespace Ui {
class ConnectionSettingDialog;
}
 
class ConnectionSettingDialog : public QDialog
{
    Q_OBJECT
 
public:
    explicit ConnectionSettingDialog(QWidget *parent = nullptr);
    ~ConnectionSettingDialog();
 
private slots:
    void on_buttonBox_accepted();
 
    void on_buttonBox_rejected();
 
private:
    Ui::ConnectionSettingDialog *ui;
private:
    void readConnData();    //Чтение настроек подключения
    void saveConnData();    //Запись настроек подключения
};
 
#endif // CONNECTIONSETTINGDIALOG_H
connectionsettingdialog.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "connectionsettingdialog.h"
#include "ui_connectionsettingdialog.h"
#include "LoggingCategories/loggingcategories.h"
#include "GlobalSettings/globalsettings.h"
#include <QSettings>
 
ConnectionSettingDialog::ConnectionSettingDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::ConnectionSettingDialog)
{
    ui->setupUi(this);
    readConnData();
    qInfo(logInfo()) << "Открытие диалога настройки подключения.";
}
 
ConnectionSettingDialog::~ConnectionSettingDialog()
{
    delete ui;
}
 
void ConnectionSettingDialog::readConnData()
{
    QSettings settings(GlobalSettings::CONFIG_FILE_NAME,QSettings::IniFormat);
    settings.beginGroup("DATABASE");
    ui->lineEditServer->setText(settings.value("HostName").toString());
    ui->lineEditDatabase->setText(settings.value("DataBase").toString());
    ui->lineEditUser->setText(settings.value("User").toString());
    ui->lineEditPassword->setText(settings.value("Password").toString());
    settings.endGroup();
}
 
void ConnectionSettingDialog::saveConnData()
{
    QSettings settings(GlobalSettings::CONFIG_FILE_NAME,QSettings::IniFormat);
    settings.beginGroup("DATABASE");
    settings.setValue("HostName",ui->lineEditServer->text().trimmed());
    settings.setValue("DataBase",ui->lineEditDatabase->text().trimmed());
    settings.setValue("User",ui->lineEditUser->text().trimmed());
    settings.setValue("Password",ui->lineEditPassword->text().trimmed());
    settings.endGroup();
}
 
void ConnectionSettingDialog::on_buttonBox_accepted()
{
    saveConnData();
    this->accept();
}
 
void ConnectionSettingDialog::on_buttonBox_rejected()
{
    this->reject();
}
database.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef DATABASE_H
#define DATABASE_H
 
#include <QObject>
 
class DataBase : public QObject
{
    Q_OBJECT
public:
    explicit DataBase(QObject *parent = nullptr);
    bool connectDB();
 
signals:
 
public slots:
};
 
#endif // DATABASE_H
database.cpp

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "database.h"
#include "GlobalSettings/globalsettings.h"
#include "LoggingCategories/loggingcategories.h"
#include "ConnectionSettingDialog/connectionsettingdialog.h"
 
 
#include <QSettings>
#include <QSqlDatabase>
#include <QSqlError>
#include <QMessageBox>
 
DataBase::DataBase(QObject *parent) : QObject(parent)
{
 
}
 
bool DataBase::connectDB()
{
    bool result = false;
 
    QSettings settings(GlobalSettings::CONFIG_FILE_NAME, QSettings::IniFormat);
    QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
 
    //Установка параметров подключения из файла настроек
    settings.beginGroup("DATABASE");
    db.setHostName(settings.value("HostName").toString());
    db.setDatabaseName(settings.value("DataBase").toString());
    db.setUserName(settings.value("User").toString());
    db.setPassword(settings.value("Password").toString());
    settings.endGroup();
    //Открываем базу данных, если попытка не удачная вызываем диалог настроек подключения
    if(!db.open()) {
        qCritical(logCritical()) <<  "Не возможно подключиться к базе данных." << endl << "Причина:" << db.lastError().text();
        int rez = QMessageBox::question(nullptr, QObject::tr("Ошибка подключения"),
                              "Не могу установить соединение с базой данных.\nПроверить настройки подключения?",
                              QMessageBox::Yes | QMessageBox::No);
        if(rez == QMessageBox::Yes) {
            ConnectionSettingDialog *connDlg = new ConnectionSettingDialog();
            int result = connDlg->exec();
            if(result == QDialog::Accepted) {
                qInfo(logInfo()) << "Сохранение настроек подключения.";
            }
        }
        //Завершаем работу
        result = false;
    } else {
        qInfo(logInfo()) << "Успешное подключение к центральной базе данных.";
        result = true;
    }
 
 
    return result;
}
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    DataBase *db = new DataBase();
    if(!db->connectDB()){
        qCritical(logCritical()) << "Аварийное завершение работы.";
        return 1;
    }
 
 
 
    qInfo(logInfo()) << "Запуск программы.";
    MainWindow w;
    w.showMaximized();
    return a.exec();
}
1
1 / 1 / 0
Регистрация: 15.03.2019
Сообщений: 174
14.04.2020, 14:09  [ТС] 6
можно, но как ты bindValue() уберешь кавычки в случае создание базы данных

Добавлено через 1 минуту
а если не сложно, можно весь проект посмотреть

Добавлено через 2 часа 47 минут
всем спасибо, догадался все работает

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void reg::on_pushButton_clicked()
{
     QSqlQuery query;
    // QStringView name;
     //QLineEdit name;
     QString parol;
query.exec("SELECT  pg_terminate_backend(pid)  FROM  pg_stat_activity  WHERE pid <> pg_backend_pid()");
 
     if(!query.exec("Create DATABASE "+ui->base1->text())){
                          qDebug() << "error base into ";
                          qDebug() << query.lastError().text();
                      }
   //  query.prepare("CREATE USER "+ui->login->text() /*+ " WITH ENCRYPTED PASSWORD "+ui->parol1->text()*/
       // "GRANT ALL PRIVILEGES ON DATABASE "+ui->base1->text()+ " TO " +ui->login->text()
    //               );
   //  query.bindValue(":parol", parol+ui->parol1->text());
     if(!query.exec("CREATE USER "+ui->login->text()+ " WITH ENCRYPTED PASSWORD '"+ui->parol1->text()+"';"
        ) and !query.exec("GRANT ALL PRIVILEGES ON DATABASE "+ui->base1->text()+" TO "+ui->login->text())
                    )
     {
 
                        qDebug() << "error insert into ";
                        qDebug() << query.lastError().text();
 
     }else{qDebug() << "suc";}
}
0
14.04.2020, 14:09
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.04.2020, 14:09
Помогаю со студенческими работами здесь

SQL-запрос на создание базы данных
Можете мене скинуть SQL-запрос на создание базы данных? А также объяснить. И где запускать тот...

Создание новой базы данных MS SQL с паролем
как создать бд с паролем?

Как наделить определенного пользователя бд полномочиями на создание объектов (то есть таблиц и тд) базы данных
подскажите, как наделить определенного пользователя бд полномочиями на создание объектов (то есть...

Создание базы данных в SQL Management Studio 2008
Нужно создать базу данных в SQL Managmment Studio 2008 при нажатии на клавишу пробовал вот так ...

Создание базы данных в программе с защитой от SQL инъекций
Помогите пожалуйста! преподаватель поставил условие, что вся программа должна быть защищена от SQL...

Создание базы данных в Microsoft SQL Server 2000
Здравствуйте, В утилите Query Analyzer у меня не получается создать базу данных с помощью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru