pcse7en
یک شنبه 05 اردیبهشت 1395, 18:50 عصر
سلام خدمت اساتید محترم.
می خواستم یه برنامه کوچولو برای تست کردن اتصال به sqlite در اندروید بنویسم ولی در هنگام ران کردن برنامه هیچ ارتباطی با پایگاه داده برقرار نمیکنه و جوابی هم نمیده.
و در قسمت کنسول کیوت یه خطایی مبنی بر اینکه پایگاه داده open نشده دیده میشه.
تو سایتای خارجی چیزی پیدا نکردم غیر اینکه هر چی هست به پوشه assests ربط داره.
کد من اینه یه نگاهی بندازید ببینید مشکل چیه؟؟
#include "csqlconnect.h"
#include <QFile>
#include <QSqlQuery>
#include <QMessageBox>
#include <QDebug>
#include <QSql>
#include <QSqlError>
#include <QSqlTableModel>
#include <QSqlRecord>
CSqlConnect::CSqlConnect()
{
db = QSqlDatabase::addDatabase( "QSQLITE","MyConnection" );
QFile dfile("./myfile.sqlite");
bool dbf=dfile.exists();
if (!dbf)
{
QFile::copy("assets:/myfile.sqlite", "./myfile.sqlite");
QFile::setPermissions("./myfile.sqlite",QFile::WriteOwner | QFile::ReadOwner);
}
db.setDatabaseName( "myfile.sqlite" );
bool open=db.open();
if(!open)
{
QMessageBox::warning(0, "Failed to connect!", "Error connecting to database: "+db.lastError().driverText());
// qDebug()<<"Failed!!!!";
}
if(open)
{
QSqlQuery query;
query.exec("create table person "
"(id integer primary key, "
"firstname varchar(20), "
"lastname varchar(30), "
"age integer)");
}
QSqlQuery query2;
query2.prepare("INSERT INTO person (id,firstname,lastname,age)VALUES(:ID,:FIRSTNAME,: LASTNAME,:AGE)");
query2.bindValue(":ID",1);
query2.bindValue(":FIRSTNAME","ali");
query2.bindValue(":LASTNAME","alavi");
query2.bindValue(":AGE",24);
query2.exec();
QSqlTableModel model;
model.setTable("person");
model.select();
QSqlRecord record=model.record(0);
result=record.value("firstname").toString();
}
QString CSqlConnect::getValue()
{
return result;
}
CSqlConnect::~CSqlConnect()
{
db.close();
}
می خواستم یه برنامه کوچولو برای تست کردن اتصال به sqlite در اندروید بنویسم ولی در هنگام ران کردن برنامه هیچ ارتباطی با پایگاه داده برقرار نمیکنه و جوابی هم نمیده.
و در قسمت کنسول کیوت یه خطایی مبنی بر اینکه پایگاه داده open نشده دیده میشه.
تو سایتای خارجی چیزی پیدا نکردم غیر اینکه هر چی هست به پوشه assests ربط داره.
کد من اینه یه نگاهی بندازید ببینید مشکل چیه؟؟
#include "csqlconnect.h"
#include <QFile>
#include <QSqlQuery>
#include <QMessageBox>
#include <QDebug>
#include <QSql>
#include <QSqlError>
#include <QSqlTableModel>
#include <QSqlRecord>
CSqlConnect::CSqlConnect()
{
db = QSqlDatabase::addDatabase( "QSQLITE","MyConnection" );
QFile dfile("./myfile.sqlite");
bool dbf=dfile.exists();
if (!dbf)
{
QFile::copy("assets:/myfile.sqlite", "./myfile.sqlite");
QFile::setPermissions("./myfile.sqlite",QFile::WriteOwner | QFile::ReadOwner);
}
db.setDatabaseName( "myfile.sqlite" );
bool open=db.open();
if(!open)
{
QMessageBox::warning(0, "Failed to connect!", "Error connecting to database: "+db.lastError().driverText());
// qDebug()<<"Failed!!!!";
}
if(open)
{
QSqlQuery query;
query.exec("create table person "
"(id integer primary key, "
"firstname varchar(20), "
"lastname varchar(30), "
"age integer)");
}
QSqlQuery query2;
query2.prepare("INSERT INTO person (id,firstname,lastname,age)VALUES(:ID,:FIRSTNAME,: LASTNAME,:AGE)");
query2.bindValue(":ID",1);
query2.bindValue(":FIRSTNAME","ali");
query2.bindValue(":LASTNAME","alavi");
query2.bindValue(":AGE",24);
query2.exec();
QSqlTableModel model;
model.setTable("person");
model.select();
QSqlRecord record=model.record(0);
result=record.value("firstname").toString();
}
QString CSqlConnect::getValue()
{
return result;
}
CSqlConnect::~CSqlConnect()
{
db.close();
}