crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> как подключить базу данных и сделать запрос sql
Гость_Гость_lexflax_*_*
сообщение 26.5.2013, 12:07
Сообщение #1





Гости








    


Доброго времени суток...
Никогда раньше в qt qreator не работал, задали на нем написать приложение к которому можно подключить базу данных которую я уже сделал в sqlite3... Как в нем подлючается база данных не знаю... посмотрел много разной литературы но толком суть не понял как это делается... у меня база данных называется fox.db , вид допустим такой -приложение должно иметь кнопку по нажатию которой подключается база и выполняется запрос который допустим в компоненте LineEdit я буду писать... и результат запроса отображается на каком нибудь другом компоненте... подскажите как это реализовать собственно нужен сам код...
Нашел такой по подлючению базы...
void MainWindow::on_pushButton_clicked()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("fox");

bool b = db.open();
но не понимаю подключилась ли база данных на самом деле или нет...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.5.2013, 13:03
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Гость_Гость_lexflax_*_* @ 26.5.2013, 14:07) *
db.setDatabaseName("fox");

Цитата(Гость_Гость_lexflax_*_* @ 26.5.2013, 14:07) *
у меня база данных называется fox.db



Да и вообще имя нужно полностью писать (т.е. путь в том числе)


Цитата(Гость_Гость_lexflax_*_* @ 26.5.2013, 14:07) *
посмотрел много разной литературы но толком суть не понял как это делается
смотри примеры из документации
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_lexflax_*_*
сообщение 28.5.2013, 3:54
Сообщение #3





Гости








    


Цитата(Litkevich Yuriy @ 26.5.2013, 13:03) *
Цитата(Гость_Гость_lexflax_*_* @ 26.5.2013, 14:07) *
db.setDatabaseName("fox");

Цитата(Гость_Гость_lexflax_*_* @ 26.5.2013, 14:07) *
у меня база данных называется fox.db



Да и вообще имя нужно полностью писать (т.е. путь в том числе)


Цитата(Гость_Гость_lexflax_*_* @ 26.5.2013, 14:07) *
посмотрел много разной литературы но толком суть не понял как это делается
смотри примеры из документации

ну вот вроде получился код подключения базы
void MainWindow::on_pushButton_clicked()
{
QSqlDatabase db = QSqlDatabase::database();
if (db.connectionName().isEmpty()) db = QSqlDatabase::addDatabase("QSQLITE");

db.setDatabaseName("fox");
if (!db.open()) {
QMessageBox::warning(this, qApp->applicationName(), QString("Не открывается бд : %1").arg(db.databaseName()));
return;

}
сообщение что база не подключенна не выдает... значит я так понимаю база подключилась...
Как теперь к этой базу отправить запрос допустим select * from kod;
И результат этого запроса вывести в компонент tableView??????
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_lex_*_*
сообщение 28.5.2013, 6:31
Сообщение #4





Гости








    


появилась другая проблема вместо того чтоб подключать мою базу после нажатия кнопка программа создает файл с таким же именем как моя база только пустой и подключает его... почему так выходит????
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.5.2013, 7:15
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Это особенность SQLite, если файла БД не существует, то он будет создан.
Задавай правильный путь к файлу БД.

как выполнять запросы смотри в примерах, примеров в документации полно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_lex_*_*
сообщение 28.5.2013, 10:39
Сообщение #6





Гости








    


прописал весь путь к базе...
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:/Users/Алексей/Desktop/sqlite3/fox");
db.open();
так же пробовал и с расширением QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:/Users/Алексей/Desktop/sqlite3/fox.db");
db.open();

В итоге в этой папке появляется опять же второй файл с именем fox пустой а рядом с ним моя база fox.
Даже если проверять если ли подключение или нет, то не факт что созданное подключение будет именно с моей базой а не тем файлом который появляется при запуске программы...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.5.2013, 13:03
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Гость_Гость_lex_*_* @ 28.5.2013, 12:39) *
появляется опять же второй файл с именем fox пустой а рядом с ним моя база fox.
на виндовозе (который не чувствует регистр символов) нельзя создать в одном каталоге два одинаковых файла.
Стало быть есть какая-то разница в именах.

И к стати, путь содержащий кириллицу - источник многих проблем
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.4.2024, 20:51