ravaei
دوشنبه 18 اسفند 1393, 23:42 عصر
درود ...
من یه کلاس دارم به نام دیتا بیس که کل توابعی که واسه دیتابیس دارمو اونجا تعریف کردم یکی از توابع تابع اتصال به دیتا بیس هستش که وقتی تابع رو تو کلاسی که می خوام استفاده کنم می نویسم کار می کنه و درسته ، ولی وقتی همونو تو کلاس دیتا بیسم مینویسم و از اون کلاسم یه شیی میسازم (به صورت اشاره گر ) و می خوام از تابع استفاده کنم نمی تونم .
و error میده ...
C:\Qt\Qt5.3.0\Tools\QtCreator\bin\NaghshAzin\newwo rk_desginer.cpp:116: error: undefined reference to `database::Adddbb(QString, QString, QString, QString, QString)'
و همچنین تابع رو تو database.h قسمت public slots تعریف میکنم ...
این کد فایل databse.cpp :
#include "database.h"
#include <QtSql/QSql>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QSqlQuery>
#include <QtSql>
#include <QtDebug>
#include <qtableview.h>
#include <newwork_desginer.h>
#include <worklist_desginer.h>
void Adddbb(QString name, QString phonenumber , QString address , QString need , QString details )
{
//connecting to database ...
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" );
db.setDatabaseName( "./naghshazinSQ.db" );
if( !db.open() )
{
qDebug() << db.lastError();
qFatal( "Failed to connect." );
}
db.setDatabaseName( ":memory:" );
//Insert to database ...
QSqlQuery qry;
qry.prepare( "INSERT INTO tabel1 (name,phonenumber,address,need,details) VALUES (?,?,?,?,?)" );
qry.addBindValue(name);
qry.addBindValue(phonenumber);
qry.addBindValue(address);
qry.addBindValue(need);
qry.addBindValue(details);
if( !qry.exec() )
qDebug() << qry.lastError();
else
qDebug( "Inserted!" );
}
database::database()
{
}
و این database.h :
#ifndef DATABASE_H
#define DATABASE_H
#include <QSqlTableModel>
#include <qstring.h>
class database
{
public slots:
database();
QSqlTableModel * add_row();
QSqlTableModel * delete_row(QString IDname);
void Adddbb(QString Name ,QString Phonenumber ,QString Address ,QString Need ,QString Details);
};
#endif // DATABASE_HA
و این هم جایی که از کلاس نمونه ساختم و از تابع استفاده کردم :
database* a = new database;
a->Adddbb(name,phonenumber,address,need,details);
من یه کلاس دارم به نام دیتا بیس که کل توابعی که واسه دیتابیس دارمو اونجا تعریف کردم یکی از توابع تابع اتصال به دیتا بیس هستش که وقتی تابع رو تو کلاسی که می خوام استفاده کنم می نویسم کار می کنه و درسته ، ولی وقتی همونو تو کلاس دیتا بیسم مینویسم و از اون کلاسم یه شیی میسازم (به صورت اشاره گر ) و می خوام از تابع استفاده کنم نمی تونم .
و error میده ...
C:\Qt\Qt5.3.0\Tools\QtCreator\bin\NaghshAzin\newwo rk_desginer.cpp:116: error: undefined reference to `database::Adddbb(QString, QString, QString, QString, QString)'
و همچنین تابع رو تو database.h قسمت public slots تعریف میکنم ...
این کد فایل databse.cpp :
#include "database.h"
#include <QtSql/QSql>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QSqlQuery>
#include <QtSql>
#include <QtDebug>
#include <qtableview.h>
#include <newwork_desginer.h>
#include <worklist_desginer.h>
void Adddbb(QString name, QString phonenumber , QString address , QString need , QString details )
{
//connecting to database ...
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" );
db.setDatabaseName( "./naghshazinSQ.db" );
if( !db.open() )
{
qDebug() << db.lastError();
qFatal( "Failed to connect." );
}
db.setDatabaseName( ":memory:" );
//Insert to database ...
QSqlQuery qry;
qry.prepare( "INSERT INTO tabel1 (name,phonenumber,address,need,details) VALUES (?,?,?,?,?)" );
qry.addBindValue(name);
qry.addBindValue(phonenumber);
qry.addBindValue(address);
qry.addBindValue(need);
qry.addBindValue(details);
if( !qry.exec() )
qDebug() << qry.lastError();
else
qDebug( "Inserted!" );
}
database::database()
{
}
و این database.h :
#ifndef DATABASE_H
#define DATABASE_H
#include <QSqlTableModel>
#include <qstring.h>
class database
{
public slots:
database();
QSqlTableModel * add_row();
QSqlTableModel * delete_row(QString IDname);
void Adddbb(QString Name ,QString Phonenumber ,QString Address ,QString Need ,QString Details);
};
#endif // DATABASE_HA
و این هم جایی که از کلاس نمونه ساختم و از تابع استفاده کردم :
database* a = new database;
a->Adddbb(name,phonenumber,address,need,details);