Russian Qt Forum
Ноябрь 18, 2024, 11:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: SQLite - select возвращает пустую таблицу, а это не так !  (Прочитано 21345 раз)
-QT-
Гость
« : Декабрь 04, 2008, 13:06 »

Доброго времени суток, All.

Вот такая конструкция:
Код:
	
QSqlQuery query(QSqlDatabase::database());
query.prepare("SELECT id, checknumber FROM 'p_tovar' WHERE 'p_tovar'.'schkod' = :schkod");
query.bindValue(":schkod", value);
if(!query.exec())
{
        QApplication::beep();
QMessageBox::critical(this, QObject::tr("SQL Error"), query.lastError().text());
return;
}

Делал так: "SELECT * FROM 'p_tovar' "
И через параметр и б...я, как только не извращался  Злой нифига не работает.
Хотя в другой программе все пашет.  Непонимающий
И это только селекты, апдейты и инсерты работают нормально.

У кого какие мысли по этому поводу?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Декабрь 04, 2008, 13:09 »

а если списо таблиц вывести,  твоя таблица в списке будет?
(может это из-за одиночных кавычек)
Записан

Юра.
-QT-
Гость
« Ответ #2 : Декабрь 04, 2008, 13:12 »

а если списо таблиц вывести,  твоя таблица в списке будет?
(может это из-за одиночных кавычек)
Что имелось в виду ?
Если через коммандную строку то все таблицы видны.
Код:
sqlite> .tables
p_check  p_kamen  p_tovar
sqlite>       
И запрос выполняется правильно, возвращает нужную запись:
Код:
sqlite> SELECT id, checknumber FROM 'p_tovar' WHERE 'p_tovar'.'schkod' = '2900000113';
1|
Если в программе, то ошибки что отсутствует таблица нет, если поставить другое имя таблицы в запросе
ругается что такой таблицы нет.
« Последнее редактирование: Декабрь 04, 2008, 13:15 от -=QT=- » Записан
spirit
Гость
« Ответ #3 : Декабрь 04, 2008, 13:22 »

попробуй запрос переписать вот так
Цитировать
"SELECT id, checknumber FROM p_tovar WHERE p_tovar.schkod = :schkod"
Записан
-QT-
Гость
« Ответ #4 : Декабрь 04, 2008, 14:09 »

попробуй запрос переписать вот так
Цитировать
"SELECT id, checknumber FROM p_tovar WHERE p_tovar.schkod = :schkod"
Результат тот-же.
Даже пробовал так:
Код:
QString sql(QString("SELECT id, checknumber FROM p_tovar WHERE p_tovar.schkod = %1").arg(value));
QSqlQuery query(sql, QSqlDatabase::database());
ничего не выходит... сцука б...л п...ла на...
Записан
spirit
Гость
« Ответ #5 : Декабрь 04, 2008, 14:13 »

а что выдает такой запрос?
Цитировать
SELECT * FROM p_tovar
Записан
-QT-
Гость
« Ответ #6 : Декабрь 04, 2008, 14:18 »

а что выдает такой запрос?
Цитировать
SELECT * FROM p_tovar
пусто.
query.size() = -1
Записан
spirit
Гость
« Ответ #7 : Декабрь 04, 2008, 14:20 »

вопрос конечно идиотский, а база-то открыта?  Улыбающийся
Записан
-QT-
Гость
« Ответ #8 : Декабрь 04, 2008, 14:26 »

вопрос конечно идиотский, а база-то открыта?  Улыбающийся

 
Код:
   QSqlDatabase db = QSqlDatabase::addDatabase( ParameterSQL.DriverName );
    db.setDatabaseName( ParameterSQL.DatabaseName );
    if (ParameterSQL.DriverName != "QSQLITE")
    {
        db.setHostName( ParameterSQL.HostName );
        db.setPort( ParameterSQL.PortNumber );
        db.setUserName( ParameterSQL.UserName );
        if ( ParameterSQL.SavePasword )
            db.setPassword( ParameterSQL.Password );
    }

    if ( !db.open() )
    {
        listBrowseMessage(QString::fromUtf8("Не удалось подключиться к локальной базе данных."));
    }
    if (db.isValid())
MainWindowImpl::showTableWidget();
    else
qDebug() << TEXTLOGING << "db.isValid = " << db.isValid();
ни каких сообщений или ошибок не выдается.
Если убрать файл базы данных то ругается (Не удалось подключиться к локальной базе данных.)
« Последнее редактирование: Декабрь 04, 2008, 14:28 от -=QT=- » Записан
spirit
Гость
« Ответ #9 : Декабрь 04, 2008, 14:28 »

а в sqlbrowser'e запросы к этой табле обрабатываются?
ps.sqlbrowser кьютишный экзампл в папке demos/sqlbrowser.
Записан
-QT-
Гость
« Ответ #10 : Декабрь 04, 2008, 14:31 »

а в sqlbrowser'e запросы к этой табле обрабатываются?
ps.sqlbrowser кьютишный экзампл в папке demos/sqlbrowser.
да все работает и показывает заголовки таблицы и записи.

Я же писал выше - что в других прогах работает все.
Записан
spirit
Гость
« Ответ #11 : Декабрь 04, 2008, 14:34 »

напиши простенькое тестовое приложение с реальными параметрами, т.е. жестко задай имя базы, драйвер и т.д. и глянь результат.
что-то типа такого
Код
C++ (Qt)
...
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydatabase");
if (!db.open())
   return;
QSqlQuery query;
query.prepare("SELECT id, checknumber FROM p_tovar WHERE p_tovar.schkod = ?");
query.addBindValue(myValue);
if (!query.exec())
   return;
...
 
« Последнее редактирование: Декабрь 04, 2008, 14:38 от spirit » Записан
ритт
Гость
« Ответ #12 : Декабрь 04, 2008, 14:35 »

похоже, что-то у тебя накосячено...

зы. вместо if (ParameterSQL.DriverName != "QSQLITE") лучше бы if (db.driverName() != "QSQLITE")
Записан
-QT-
Гость
« Ответ #13 : Декабрь 04, 2008, 14:38 »

напиши простенькое тестовое приложение с реальными параметрами, т.е. жестко задай имя базы, драйвер и т.д. и глянь результат.
Те же яйца - вид сбоку! Нифига нет.
Записан
ритт
Гость
« Ответ #14 : Декабрь 04, 2008, 15:08 »

тогда прикладывай компилябельный проект - сообща победим Улыбающийся
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.164 секунд. Запросов: 23.