Здравствуйте, гость ( Вход | Регистрация )
silver47 | Дата 29.4.2011, 14:42 |
Ну во-первых WHERE (условие) AND (условие). Во-вторых лучше делать таким образом:
Нужно не забывать, что в 2005SQL сервере нет такого поля как Date и такого поля как Time, есть только DateTime, следовательно, даже если Вы там храните только время, нужно передавать и то и другое. 2 Borodeys если есть еще вопросы, создайте, все-таки отдельную тему. Уже не по теме пошёл разговор. |
|
Borodeys | Дата 29.4.2011, 12:53 |
Вуху, заработало! Огромное спасибо silver47. А у меня еще один вопрос, как в SQL запросе использовать значения с timeEdit виджета? То есть ну или как-то так, при выполнении данного запроса MS server говорит, что колонок timeEdit и timeEdit_2 не существует. |
|
Litkevich Yuriy | Дата 28.4.2011, 10:11 |
Borodeys, форматируй код (тэг: code) | |
silver47 | Дата 28.4.2011, 5:01 |
Однако здесь только все начинается, по умолчанию QT использует только драйвера SQLite, а нам же нужен драйвер qsqlodbc4.dll и libqsqlodbc4.lib, которые лежат в папке qtdir\qt\plugins\sqldrivers. Из коробки LGPL Qt поддерживает не только SQLite, но и другие типы БД, в том числе и, требуемый Вам, ODBC. Подключать их не нужно. Допустим у вас есть источник данных ODBC с именем MyDB, тогда подключение будет выглядеть так: widget.h
widget.cpp
|
|
Borodeys | Дата 27.4.2011, 20:05 |
Вот моя проблема из соседнего обсуждения : Занимаюсь аналогичной проблемой уже длительное время. Подключение к БД осуществляется следующим образом создаем файл connection.h: #ifndef CONNECTION_H #define CONNECTION_H #include <QMessageBox> #include <QSqlDatabase> #include <QSqlError> #include <QtSql> static bool createConnection() { QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("такая_то_база"); db.setUserName("логин_такой_то"); db.setPassword("пароль_эдакий"); bool connected = db.open(); if (!connected) { QMessageBox::critical(0, ("connection.h "),"Cannot open database =[\n " +(db.lastError().text()), QMessageBox::Cancel); return false; } } #endif // CONNECTION_H Затем из main.cpp обращаемся к данному заголовочному файлу: #include <QtGui/QApplication> #include "mainwindow.h" #include "connection.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.driverName()="count"; app.addLibraryPath("pugins"); if (!createConnection()){ QMessageBox::critical(0, ("main.cpp"),"Cannot open database =[\n" +(db.lastError().text()), QMessageBox::Cancel); return 1; } MainWindow w; w.show(); return app.exec(); } Затем, если у тебя window xp и MSSQL server, создаем драйвер подключения с именем нашей базы данных Панель управления\ Администрирование\Источники данных (ODBC)\вкладка Системный DSN кнопочка добавить Выбираем драйвер SQL Server Native Client и указываем его имя, как имя нашей базы данных. Барабанная дробь........... Тада, теперь можно подключаться к ODBC базе данных. Однако здесь только все начинается, по умолчанию QT использует только драйвера SQLite, а нам же нужен драйвер qsqlodbc4.dll и libqsqlodbc4.lib, которые лежат в папке qtdir\qt\plugins\sqldrivers. Увы, как их подключить я не знаю, необходимо что-то прописать в .pro файле. При компиляции massegeBox из main.cpp говорит следующее: Driver not loaded. Driver not losaded. Вот результаты компиляции: Запускается C:\Qt\TechJ\TechJ-build-desktop\debug\TechJ.exe... QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work. QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed. C:\Qt\TechJ\TechJ-build-desktop\debug\TechJ.exe завершился с кодом 1 Подозреваю, что проблема в библиотеках, вернее в их отсутствии. |
|
Litkevich Yuriy | Дата 27.4.2011, 18:18 |
Что нужно прописать в .pro файле? в pro-файле ничего не меняется, меняется только имя драйвера в QSqlDatabase::addDatabase("QODBC"); |
|
Гость | Дата 27.4.2011, 17:56 |
А если нужно именно QODBC использовать, как подключить этот драйвер, который лежит %QDIR%\qt\plugins\sqldrivers. Что нужно прописать в .pro файле? |
|
mezmay | Дата 27.4.2011, 8:47 |
Заработало! думаю проблема была в том что m_model = new QSqlTableModel(); надо было делать после создания бд |
|
silver47 | Дата 26.4.2011, 13:29 |
В заголовочном файле:
В методе:
Точнее m_model = new QSqlTableModel(); в конструкторе класса, а остальное в любом другом месте. |
|
mezmay | Дата 26.4.2011, 13:07 |
Вообще данные есть - открывал создавшуюся базу в текстовом редакторе | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 14:33 |