crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Создание БД и таблицы
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 27.11.2015, 12:51
 
Цитата(ht1515 @ 26.11.2015, 10:18) *
Вот такой код не пашет, если заранее не создать БД... Возможно это связано с плагином для mysql.
Потому что все примеры в книгах и статьях успешно используют скллайт и у них все шикарно работает, хотя наверно просто заранее ручками создают БД.
Это особенность SQLite - если файла БД нет, то при обращении к БД будет автоматически создана БД.
Так ведёт себя только SQLite!
Dovgon Дата 27.11.2015, 8:52
  создай свой класс на основе QSqlDatabase и переопредели в нем функцию open, и делай там проверки и создания БД.
ht1515 Дата 26.11.2015, 13:52
  Тоже немного костыльно, но очередной вариант...
Я что-то подобное придумывал...

Кто-то например в ФС ищет каталог БД и типо если он есть, то это факт того что БД существует.

Странно что разрабы не позаботились об этой функции...
бфло бы круто после
db.open();

создавать БД.
то есть чтобы db.open(); сам проверял наличие и создавал.
ViGOur Дата 26.11.2015, 9:03
  Попробуй так:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("password");

if (!db.isValid()){
    qDebug() << db.lastError().text();
    return;
}

db.open();
QString query = "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'addressbook'";
QSqlQuery q = db.exec( query );
if (q.size() == 0)
{
    db.exec("CREATE DATABASE IF NOT EXISTS addressbook;");
    qDebug() << db.lastError().text();
    db.setDatabaseName("addressbook");
    // ... создание таблиц или еще чего-то там
}
ht1515 Дата 26.11.2015, 8:18
  Ничего не понимаю, прочитал кучу статей одна дублирует другую

Все начинают с этого:
Цитата
Соединиться с базой данных можно вот так:

QSqlDatabase db = QsqlDatabase::addDatabase("QMYSQL", "mydb");
db.setHostName("bigblue");
db.setDatabaseName("flightdb");
db.setUserName("acarlson");
db.setPassword("1uTbSbAs");
bool ok = db.open();

* This source code was highlighted with Source Code Highlighter.



Вот такой код не пашет, если заранее не создать БД... Возможно это связано с плагином для mysql.
Потому что все примеры в книгах и статьях успешно используют скллайт и у них все шикарно работает, хотя наверно просто заранее ручками создают БД.

#include "mainwindow.h"
#include <QApplication>
#include <QtSql>
#include <QSqlDatabase>
#include <QTableView>
#include <QSqlTableModel>

static bool createConnection(QString name) {
  QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  db.setDatabaseName(name);
  db.setUserName("root");
  db.setHostName("127.0.0.1");
  db.setPassword("111");
  db.setPort(3306);

  if (!db.open()) {
    qDebug() << "Cannot open db!" << db.lastError();
    return false;
  }
  return true;
}

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);

  if (!createConnection("cve_test")) {
    return -1;
  }

  QSqlQuery query;

  QString str = "CREATE TABLE addressbook ( "
                "number INTEGER PRIMARY KEY NOT NULL,"
                "name VARCHAR(15),"
                "phone VARCHAR(12),"
                "email VARCHAR(15),"
                ");";

  if (!query.exec(str)){
    qDebug() << "unable to create table!";
  }

  QString strF = "INSERT INTO addressbook (number, name, phone, email)"
                 "VALUES(%1,'%2','%3','%4');";

  str =strF.arg("1").arg("Piggy").arg("+45").arg("111");
  if (!query.exec(str)) {
    qDebug() << "unable to insert to table!";
  }

  QTableView     view;
  QSqlTableModel model;

  model.setTable("addressbook"); //testcase_structure_tetstlogger

  qDebug() << "Cannot model!" <<model.lastError();

//  model.removeColumn(0);
  model.select();

  model.setEditStrategy(QSqlTableModel::OnFieldChange);

  view.setModel(&model);
  view.show();

  return a.exec();
}





Я вот например не хочу извращаться и выполнять запросы

Цитата
SHOW DATABASES


потом вычленять из них свою БД и утверждать что она существует...

Как средствами КУТЕ легко и просто создать БД?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 15:27