ããã«ã¡ã¯
以äžã§ã¯ã
Qtã§ SQLiteã䜿çšããæ¹æ³ã«ã€ããŠèª¬æããŸãã èè
ã¯ãå¯èœãªéãQtã®ããŒã¿ããŒã¹ããã°ã©ãã³ã°ãæ€èšããŸããã
äžèšã®ãªã³ã¯ããã©ããšããããã®2ã€ã®ãã°ããã補åã«ã€ããŠèªãããšãã§ããŸããç¹ã«ãSQLiteã®äŸã䜿çšããŠãQtã§ã®ããŒã¿ããŒã¹ããã°ã©ãã³ã°ãå
·äœçã«æ€èšããŸãã SQLiteã¯ãã¯ã©ã€ã¢ã³ããµãŒããŒã¢ãŒããã¯ãã£ãæããªããšããç¹ã§ãMySQLãªã©ã®ãéåžžã®ãããŒã¿ããŒã¹ãšã¯å€å°ç°ãªããšããèšããŸããã ã€ãŸããããŒã¿ããŒã¹ãšã³ãžã³ã¯ãããã°ã©ã ã察話ããåå¥ã«åäœããããã»ã¹ã§ã¯ãããŸããã SQLiteã¯ãããã°ã©ã ããªã³ã¯ãããã©ã€ãã©ãªã§ããããããšã³ãžã³ã¯ããã°ã©ã ã®äžå¯æ¬ ãªéšåã«ãªããŸãã ã€ãŸããããã°ã©ã ããééããããã¹ãŠã®ããŒã¿ãéåžžã®ãã¡ã€ã«ã«ä¿åããããšã«ãããšæ³åããŠãã ããã ããæŽããæ¥ãããŒã¿ããã¡ã€ã«ã«ä¿åããããšã«ããŸããããããªã¬ãŒã·ã§ãã«ãã®èгç¹ããæŽçããŸããã ãã®åŸãæ°ãããã¡ã€ã«æ§é ããç¹å¥ãªæ¹æ³ã§èªèãããå¿
èŠãããããšã«æ°ä»ããŸããã ãã®ããšãããå°ãªããšãããã®ããŒã¿ãã¡ã€ã«ãšã¢ããªã±ãŒã·ã§ã³éã®ãªã³ã¯ãæäŸããAPIãæäŸããå¿
èŠããããŸãã äžè¬ã«ãäžèšã®ã·ããªãªã®è«çã¹ããŒãã¡ã³ãã«åŸã£ãŠãããŒã¿ããŒã¹ãµãŒããŒãšå®éã«ã¯ã¯ã©ã€ã¢ã³ããå¿
èŠãšããªãããŒã¿ããŒã¹ã·ã¹ãã ãäœæããŸãã ãã¯ã©ã€ã¢ã³ããµãŒããŒãããŒã¿ããŒã¹ã·ã¹ãã ãšæ¯èŒããŠéåžžã«é«éã§ããããšã倿ããããã°ã©ã èªäœãç°¡çŽ åãããŠããŸãã
ç§ã¯Qtãšå奜çãªé¢ä¿ã«ãããæè¿ããã®DBæ©èœãå¿
èŠã«ãªããŸããã ãŸããMySQLãšã¯å奜çãªé¢ä¿ã«ããããã®ãšãã«éçºããŠããããã°ã©ã ã§QtãMySQLã§äœ¿çšããããšããŸããã MySQLãQtã«ãæ¥ç¶ãããããã®æéãšç¥çµãè¶³ããªãã®ã§ãSQLtã䜿çšããããšã«ããŸããã QtSqlã¢ãžã¥ãŒã«ãæ¥ç¶ããã«ããèªã¿åããã¢ãžã¥ãŒã«ããµããŒãããŠçµã¿ç«ãŠãããŸãïŒã ããã§ããå¥ã®ã³ã³ãã¥ãŒã¿ãŒã«ããã°ã©ã ãã€ã³ã¹ããŒã«ããå¿
èŠãããå ŽåãMySQLãµãŒããŒãªã©ã®ã€ã³ã¹ããŒã«ãã匷å¶ããããããšã¯ãããŸããã ïŒç©è°ãéžããããã¯-ç§ã¯ç¥ã£ãŠããŸãïŒã
ãã¡ã€
çŸæç¹ã§ã¯ã
SQLiteManagerããã°ã©ã ã䜿çšããŠããŒã¿ããŒã¹ãããŒãã«ãªã©ãäœæããŠããŸããæè¿äœ¿çšããŸããããããã«ããã°ã©ã ãæ°ã«å
¥ããŸããã ç§ã®ãäž»å補åãã«ã¯ïŒaïŒïŒ
Qt Windows SDKãã€ã³ã¹ããŒã«ãããŠããã
QtCreatorã䜿çšããŠããŸããããã«ãããèŒããŠãããšèšããŸãïŒ
ç§èŠã§ã¯ãªããæ¬åœã«çŽ æŽãããIDEã§ã ïŒã
ãããŠãQtãšããŒã¿ããŒã¹
äžèšã§ãã§ã«æé»çã«èšåããããã«ãQtã«ã¯ãããŒã¿ããŒã¹ã䜿çšããããã®äŸ¿å©ãªããµãŒãã¹ããæäŸããå¥ã®ã¢ãžã¥ãŒã«
-QtSqlããããŸãã Qtã®çµéšãããå Žåã¯ã.proãã¡ã€ã«ã«ã€ããŠç¥ã£ãŠããŸããããã§ãªããã°ã
ç¥ãåãã«ãªããŸãã .proãã¡ã€ã«ã«æ¬¡ã®è¡ã远å ããå¿
èŠãããããšãå¿ããªãã§ãã ããã
QT += sql
ããã¯QtSqlã¢ãžã¥ãŒã«ã䜿çšãããã®ã¯ã©ã¹ãæäœããããã«ãåãã¿ã€ãã«ãå«ããå¿
èŠããããŸãã
#include <QtSql>
Qtããã¯ã§ã¯ãQtSqlã¢ãžã¥ãŒã«ã®3ã€ã®ã¬ãã«ã«ã€ããŠèª¬æããŠããŸãã
- ãã©ã€ããŒã¬ãã«
- ããã°ã©ã ã¬ãã«
- ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¬ãã«
ãã©ã€ããŒã¬ãã«
ãã©ã€ãã¬ãã«ã«ã¯ã次ã®ãããªç©çã¬ãã«ã§ããŒã¿ãåä¿¡ããããã®ã¯ã©ã¹ãå«ãŸããŸãã
- QSqlDriver
- QSqlDriverCreator <T *>
- QSqlDriverCreatorBaseã
- QSqlDriverPlugin
- QSqlResult
QSqlDriverã¯ãç¹å®ã®ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããããã«èšèšãããæœè±¡åºæ¬ã¯ã©ã¹ã§ãã ã¯ã©ã¹ããçŽæ¥ã䜿çšããªãããã«ããããšãéèŠã§ããã代ããã«
QSqlDatabaseãå¿
èŠ/䜿çšã§ããŸãã ãã ããç¬èªã®SQLãã©ã€ããŒãäœæããå Žåã¯ã
QSqlDriverããç¶æ¿ããŠãå¿
èŠãªä»®æ³é¢æ°ãšä»®æ³é¢æ°ãå®è£
ã§ããŸãã
QSqlDriverCreatorã¯ãç¹å®ã®çš®é¡ã®ãã©ã€ããŒã«SQLãã©ã€ããŒ
ãã¡ã¯ããªãŒãæäŸãããã³ãã¬ãŒãã¯ã©ã¹ã§ãã ãã³ãã¬ãŒããã©ã¡ãŒã¿ãŒã¯
QSqlDriverã®ãµãã¯ã©ã¹ã§ããå¿
èŠããããŸãã
QSqlCreatorBaseã¯ãSQLãã©ã€ããŒãã¡ã¯ããªãŒã®åºæ¬ã¯ã©ã¹ã§ãããæäŸããQSqlDriverã¯ã©ã¹ã®ç¹å®ã®ãµãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãè¿ãã«ã¯ã
createObjectïŒïŒã¡ãœããããèšãæãããå¿
èŠããããŸãã
QSqlDatabaseã¯ãããŒã¿ããŒã¹ãã©ã€ããŒãã©ã°ã€ã³ã®èªã¿èŸŒã¿ãšç®¡çãæ
åœããŸãã ããŒã¿ããŒã¹ã远å ããããšïŒããã¯
QSqlDatabase :: addDatabaseïŒïŒé¢æ°ã«ãã£ãŠè¡ãããŸãïŒãå¿
èŠãªãã©ã€ããŒãã©ã°ã€ã³ãïŒ
QSqlDriverPluginã䜿çšããŠïŒããŒããããŸãã QSqlDriverPluginã¯ãã«ã¹ã¿ã
QSqlDriverãã©ã°ã€ã³ã®æœè±¡åºæ¬ã¯ã©ã¹ãæäŸããŸãã
QSqlResultèªäœã¯ïŒãã¹ãŠã®Qtã¯ã©ã¹ã®ããã«ïŒããèªäœã«ã€ããŠèªãããã®ã¯ã©ã¹ã¯ç¹å®ã®ããŒã¿ããŒã¹ã®ããŒã¿ã«ã¢ã¯ã»ã¹ããããã®æœè±¡ã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸãã
QSqlQueryã¯
QSqlResultã® DBåºæã®å®è£
ã®ã©ãããŒïŒãäžè¬åãïŒãæäŸãããããå®çšçãªèгç¹ããã
QSqlResultã®ä»£ããã«
QSqlQueryã䜿çšããŸãã
ãããã£ãŠããã©ã€ããŒã®ã¬ãã«ã¯ãç¬èªã®ãã©ã€ããŒãäœæãããšãã«äœ¿çšããããšãéèŠã§ããããããã©ã€ããŒã®ãã¬ãŒã ã¯ãŒã¯ãšããŠäœ¿çšã§ããïŒæãé¢å¿ã®ããïŒã³ãŒãã®äŸã瀺ããŸãã
class XyzResult : public QSqlResult { public: XyzResult(const QSqlDriver *driver) : QSqlResult(driver) {} ~XyzResult() {} protected: QVariant data(int ) { return QVariant(); } bool isNull(int ) { return false; } bool reset(const QString & ) { return false; } bool fetch(int ) { return false; } bool fetchFirst() { return false; } bool fetchLast() { return false; } int size() { return 0; } int numRowsAffected() { return 0; } QSqlRecord record() const { return QSqlRecord(); } }; class XyzDriver : public QSqlDriver { public: XyzDriver() {} ~XyzDriver() {} bool hasFeature(DriverFeature ) const { return false; } bool open(const QString & , const QString & , const QString & , const QString & , int , const QString & ) { return false; } void close() {} QSqlResult *createResult() const { return new XyzResult(this); } };
ããã°ã©ã ã¬ãã«
ããŒã¿ããŒã¹ã«æ¥ç¶ããã«ã¯ããŸãéçã¡ãœãã
QSqlDatabase :: addDatabaseïŒïŒã䜿çšããŠãã©ã€ããŒãã¢ã¯ãã£ãã«ããå¿
èŠããããŸãã ã¡ãœããã¯
ãDBMSãã©ã€ãã®èå¥åã瀺ãæååãåŒæ°ãšããŠåãåããŸãã QSQLITEãå¿
èŠã«ãªããŸãã
QSqlDatabase sdb = QSqlDatabase::addDatabase("QSQLITE"); sdb.setDatabaseName("db_name.sqlite"); if (!sdb.open()) {
addDatabaseéç颿°ã«ã¯ããã©ã€ããŒåã§ã¯ãªããã©ã€ããŒèªäœïŒ
QSqlDriver *ïŒãåãåããªãŒããŒããŒãããããå
åŒãããããŸãã
æ¥ç¶ã¯openïŒïŒã¡ãœããã䜿çšããŠè¡ãããŸãã
QSqlDatabaseã¯ã©ã¹ã¯ãããŒã¿ããŒã¹æ¥ç¶ã衚ããŸãã æ¥ç¶ã¯ããµããŒããããŠããããŒã¿ããŒã¹ãã©ã€ããŒãä»ããããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã åãããŒã¿ããŒã¹ã«è€æ°ã®æ¥ç¶ã確ç«ã§ããããšãéèŠã§ãã
æ¥ç¶äžã«ãšã©ãŒãçºçããå ŽåïŒ
openïŒïŒã¡ãœãã
ïŒ ããšã©ãŒã«é¢ããæ
å ±ã¯
QSqlDatabase :: lastErrorïŒïŒã¡ãœããããååŸã§ããŸãïŒ
QSqlErrorãè¿ããŸãïŒã
if (!sdb.open()) { qDebug() << sdb.lastError().text(); }
Qtã䜿çšããŠSQLã³ãã³ããå®è¡ããæ¹æ³ãæ€èšããŠãã ããã
QSqlQueryã¯ã©ã¹ã䜿çšã
ãŠããã
è¡ãããšãã§ããŸãã ãã®ã¯ã©ã¹ã¯ã
SELECT ã
INSERT ã
UPDATE ã
DELETEãªã©ã®
DMLïŒããŒã¿æäœèšèªïŒåŒã®å®è¡ã ãã§ãªãã
CREATE TABLEãªã©ã®
DDLïŒããŒã¿å®çŸ©èšèªïŒåŒã®å®è¡ã«ã䜿çšã§ããŸãã SQLæšæºã§ã¯ãªãDBåºæã®ã³ãã³ããå®è¡ã§ããããšã«æ³šæããŠãã ããïŒããšãã°ãPSQLã®å Žå-ãSET DATESTYLE = ISOãïŒã
æ£åžžã«å®è¡ããããªã¯ãšã¹ãã¯ãªã¯ãšã¹ãã®ã¹ããŒã¿ã¹ããã¢ã¯ãã£ããã«èšå®ããããã
isActiveïŒïŒã¯ true ãè¿ã
ãŸã ãããã§ãªãå Žåãç¶æ
ã¯éã¢ã¯ãã£ãã«èšå®ãããŸãã ã¯ãšãªã¯éåžžã®æååã®åœ¢åŒã§çºè¡ãããã³ã³ã¹ãã©ã¯ã¿ãŒãŸãã¯
QSqlQuery :: execïŒïŒã¡ãœããã«æž¡ãããŸãã æåã®ã±ãŒã¹ã§ã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒã«æž¡ããšãã«ãã³ãã³ããèªåçã«èµ·åãããŸãïŒãªããžã§ã¯ãã®æ§ç¯æïŒã
éåžžã«è峿·±ãã®ã¯ã
QSqlQueryãæäŸããããã²ãŒã·ã§ã³æ©èœ
ã§ã ã ããšãã°ã
SELECTã¯ãšãªã®åŸã
nextïŒïŒãpreviousïŒïŒãfirstïŒïŒãlastïŒïŒãããã³
seekïŒïŒã¡ãœããã䜿çšããŠãåéãããããŒã¿ãããã²ãŒãã§ããŸãã
QSqlQuery query("SELECT country FROM artist"); while (query.next()) { QString country = query.value(0).toString(); do_something(country); }
nextïŒïŒã¡ãœããã䜿çšãããšãããŒã¿ã®æ¬¡ã®è¡ã«ç§»åããåã®è¡ã«ãããã
previousïŒïŒãåŒã³åºãããšãã§ããŸãã
firstïŒïŒãlastïŒïŒã¯ãããããçµæããæåã®ã¬ã³ãŒããååŸããŸãã
seekïŒïŒã¯æŽæ°ã€ã³ããã¯ã¹ãååŸããåä¿¡ããã€ã³ããã¯ã¹ã®çµæããã¬ã³ãŒããååŸããæœåºãããã¬ã³ãŒãã«ãã¯ãšãªãé
眮ãããŸãã
ãµã€ãºïŒïŒã¡ãœããã䜿çšããŠããµã€ãºããŸãã¯ããŒã¿ã®è¡æ°ïŒçµæïŒã確èªã§ããŸãã æåã®ã¬ã³ãŒããäœçœ®0ã«ãããã¯ãšãªãã¢ã¯ãã£ããªç¶æ
ã§ããå¿
èŠãããã
isSelect ïŒïŒã
true ïŒæåŸã®ã¯ãšãªã
SELECTã®å Žåã«çºçïŒãè¿ããŠããseekïŒïŒã¡ãœãããåŒã³åºãããšã«æ³šæããŠãã ããã
å
¬åŒããã¥ã¡ã³ãã® seek ïŒïŒã¡ãœããã«ã€ããŠè©³ããèªãããšããå§ãããŸãã
ã¯ãšãªæååã
QSqlQueryã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã«
æž¡ããšããªããžã§ã¯ãã®äœææã«-æ§ç¯äžã«ã¯ãšãªãå®è¡ãããããšãäžã§è¿°ã¹ãŸããã
exec ïŒïŒã¡ãœããã䜿çšãããšãããã°ããªã¯ãšã¹ãã®å®è¡æéãç£èŠã§ããŸãã å»ºèšæ¥
QSqlQuery query("SELECT country FROM artist");
次ã®ããã«è¡šãããšãã§ããŸãã
QSqlQuery query; query.exec("SELECT country FROM artist");
ãã®ããã
exec ïŒïŒã¯èŠæ±ã
QStringãšããŠåãåããŸãã ãªã¯ãšã¹ããæºãããããšãæåããå Žåããã®ã¡ãœããã¯trueãè¿ããç¶æ
ãã¢ã¯ãã£ãã«èšå®ããŸãããã以å€ã®å Žåããã¹ãŠã¯ç€ºãããæäœãšãå察ãã«ãªããŸãã ãã¡ãããã¯ãšãªæååã¯ãèŠæ±ãããããŒã¿ããŒã¹ïŒç¹ã«SQLæšæºïŒã®æ§æèŠåã«åŸãå¿
èŠãããããšãèŠããŠããå¿
èŠããããŸãã
è峿·±ãã®ã¯ãå®è¡åŸãèŠæ±ãç¡å¹ãªïŒuyïŒïŒã¬ã³ãŒãã«é
眮ãããããšã§ããã€ãŸããçµæãé©åã«äœ¿çšããã«ã¯ãããšãã°
next ïŒïŒã¡ãœããã䜿çšããå¿
èŠããããŸãã
exec ïŒïŒã¡ãœããã«ã¯ãåŒæ°ãåãåããªããªãŒããŒããŒãããã代æ¿ããããŸãã ãã®ããªã¢ã³ã
exec ïŒïŒã®åŒã³åºãã¯ããã®åã«æºåãããèŠæ±ãå®è¡ããŸãã æ³šæããŠãã ãã-ãæºåæžã¿ãã ãããè¡ãã«ã¯ãèŠæ±ã®æºåãæåããå Žåã«
trueãè¿ã
prepare ïŒïŒã¡ãœããã䜿çšããŸãã
ã¡ãœããã®éèŠæ§ããŸãã¯èšããããšã¯ã
bindValue ïŒïŒã䜿çšããŠå€ããã€ã³ãããããã®ããã¬ãŒã¹ãã«ããŒãããªã¯ãšã¹ãã«å«ããããšãã§ããããšã§ãã
QSqlQuery my_query; my_query.prepare("INSERT INTO my_table (number, address, age)" "VALUES (:number, :address, :age);"); my_query.bindValue(":number", "14"); my_query.bindValue(":address", "hello world str."); my_query.bindValue(":age", "37");
å¿åãã©ã¡ãŒã¿ãŒã®ãªãã·ã§ã³ã䜿çšããããšãã§ããŸãã
QSqlQuery my_query; my_query.prepare("INSERT INTO my_table (number, address, age)" "VALUES (?, ?, ?);"); my_query.bindValue("14"); my_query.bindValue("hello world str."); my_query.bindValue("37");
æåŸã«ãQStringãæäŸããã€ã³ã©ã€ã³åŒæ°ãåçŽã«äœ¿çšã§ããŸãã
QSqlQuery my_query; my_query.prepare( QString("INSERT INTO my_table (number, address, age) VALUES (%1, '%2', %3);") .arg("14").arg("hello world str.").arg("37") );
ã³ã³ãã€ã«æžã¿ïŒã³ããŒããŠè²Œãä»ããŠèªåã®ã¢ã€ãã¢ã«ïŒââã®äŸïŒ
#include <QtGui/QApplication> #include <QtSql> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QSqlDatabase dbase = QSqlDatabase::addDatabase("QSQLITE"); dbase.setDatabaseName("my_db.sqlite"); if (!dbase.open()) { qDebug() << "- !"; return -1; } QSqlQuery a_query; // DDL query QString str = "CREATE TABLE my_table (" "number integer PRIMARY KEY NOT NULL, " "address VARCHAR(255), " "age integer" ");"; bool b = a_query.exec(str); if (!b) { qDebug() << " , !"; } // DML QString str_insert = "INSERT INTO my_table(number, address, age) " "VALUES (%1, '%2', %3);"; str = str_insert.arg("14") .arg("hello world str.") .arg("37"); b = a_query.exec(str); if (!b) { qDebug() << " , , ?"; } //..... if (!a_query.exec("SELECT * FROM my_table")) { qDebug() << " , ."; return -2; } QSqlRecord rec = a_query.record(); int number = 0, age = 0; QString address = ""; while (a_query.next()) { number = a_query.value(rec.indexOf("number")).toInt(); age = a_query.value(rec.indexOf("age")).toInt(); address = a_query.value(rec.indexOf("address")).toString(); qDebug() << "number is " << number << ". age is " << age << ". address" << address; } return app.exec(); }
ã¯ãšãªçµæãååŸããã«ã¯ã
QSqlQuery :: valueïŒïŒã¡ãœãããåŒã³åºãå¿
èŠããããŸãããã®ã¡ãœããã§ã¯ãäŸã§
record ïŒïŒã¡ãœããã䜿çšãããåçªå·ãæž¡ãå¿
èŠããããŸãã ãã®ã¡ãœããã¯ã
SELECTã¯ãšãªã«é¢é£ããæ
å ±ãå«ã
QSqlRecordã¯ã©ã¹ã®ãªããžã§ã¯ããè¿ããŸãã
QSqlRecord :: indexOfïŒïŒãåŒã³åºãããšã«ãããåã€ã³ããã¯ã¹ãååŸããŸãã
valueïŒïŒã¡ãœããã¯
QVariantåïŒãªããžã§ã¯ãã«ç°ãªãåã®å€ãå«ããããšãã§ããã¯ã©ã¹
ïŒã®å€ãè¿ããããã¡ãœãã
QVariant :: toIntïŒïŒããã³
QVariant :: toStringïŒïŒã䜿çšããŠçµæã®å€ã倿ããŸããã
ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¬ãã«
QtSqlã¢ãžã¥ãŒã«ã¯ããã¬ãŒã³ããŒã·ã§ã³ã§äœ¿çšããããã®å€æ°ã®ã¢ãã«ãæäŸããããšã«ãããã€ã³ã¿ãã¥ãŒã®æŠå¿µããµããŒãããŠããŸãã ãã®æŠå¿µã«æ
£ããã«ã¯ã
ãã¡ããã芧ãã ãã ã
äŸãšããŠã
QSqlTableModelã¯ã©ã¹ã䜿çšãããšãããŒã¿ã衚圢åŒããã³é局圢åŒã§è¡šç€ºã§ããŸãã æç®ã«ãããšãã€ã³ã¿ãã¥ãŒã¯è¡šããŒã¿ã衚瀺ããæãç°¡åãªæ¹æ³ã§ãããããã§ã¯è¡šã®è¡ã調ã¹ããµã€ã¯ã«ã¯å¿
èŠãããŸããã 以äžã«å°ããªäŸã瀺ããŸãã
#include <QtGui/QApplication> #include <QtSql> #include <QTableView> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QSqlDatabase dbase = QSqlDatabase::addDatabase("QSQLITE"); dbase.setDatabaseName("my_db.sqlite"); if (!dbase.open()) { qDebug() << "- !"; return -1; } QTableView view; QSqlTableModel model; model.setTable("my_table"); model.select(); model.setEditStrategy(QSqlTableModel::OnFieldChange); view.setModel(&model); view.show(); return app.exec(); }
æ¥ç¶åŸã
QTableViewããŒãã«ãã¥ãŒãªããžã§ã¯ããš
QSqlTableModelããŒãã«ã¢ãã«ãªããžã§ã¯ããäœæãããŸãã
setTable ïŒïŒã¡ãœããã¯ã¢ãã«ã®çŸåšã®ããŒã¹ãèšå®ãã
select ïŒïŒåŒã³åºãã¯ããŒã¿ã§æºããããŸãã
QSqlTableModelã¯ã©ã¹ã¯ã次ã®ç·šéæŠç¥ãæäŸããŸãïŒ
setEditStrategy ïŒïŒã䜿çšããŠèšå®ïŒïŒ
- OnRowChange-ãŠãŒã¶ãŒãããŒãã«ã®å¥ã®è¡ã«ç§»åãããšããã«ããŒã¿ãèšé²ããŸãã
- OnFieldChange-ãŠãŒã¶ãŒãããŒãã«å
ã®å¥ã®ã»ã«ã«ç§»åããåŸã«èšé²ããŸãã
- OnManualSubmit - submitAll ïŒïŒã¹ããããžã®åŒã³åºãã§ããŒã¿ãèšé²ããŸãã revertAll ïŒïŒã¹ããããåŒã³åºããããš ãããŒã¿ã¯å
ã®ç¶æ
ã«æ»ããŸãã
æçš¿ã¯ããšããã«è¿ã¥ãããšæããŸãã誰ããåœŒãæ¢ããŠãããã®ãããã§èŠã€ãã誰ãããåŸã§ãæ
å ±ãå¿
èŠãšããããšãæã¿ãŸããã