저는 SQLite를 제가 작성한 C++ 응용 프로그램의 백엔드 DB로 사용할 생각입니다. 나는 trolltech 사이트와 sqlite 모두에서 관련 문서를 읽었지만 정보는 약간 흩어져 보인다. 완전한 CRUD 예제를 보여주는 간단한 내용은 없다.Qt에서 SQLite 사용하기
내 응용 프로그램에서 SQLite로 CRUD 작업을 쉽게 실행할 수 있도록 도우미 함수 세트를 작성하고 싶습니다.
다음 스 니펫은 필자가 작성한 도우미 함수의 의사 코드입니다. 스텁 함수를 "채우는"방법에 대한 제안에 감사드립니다. 특히 실망스러운 점 중 하나는 쿼리와 쿼리가 실행되는 데이터베이스 간의 관계에 대한 명확한 언급이 없기 때문에 일종의 기본 연결/테이블을 제안한다는 것입니다.
내 응용 프로그램에서는 쿼리가 실행되는 데이터베이스를 명시 적으로 지정할 수 있어야하므로 쿼리 (또는 다른 데이터베이스)와 관련된 데이터베이스/테이블을 명시 적으로 지정하는 방법에 대한 설명이있는 경우 유용합니다 그 문제에 대한 행동).
내 의사 코드는 아래에 다음과 내가 부탁 해요 어떤 경우
#include <boost/shared_ptr.hh>
typedef boost::shared_ptr<QSqlDatabase> dbPtr;
dbPtr createConnection(const QString& conn_type = "QSQLITE", const QString& dbname = ":memory:")
{
dbPtr db (new QSQlDatabase::QSqlDatabase());
if (db.get())
{
db->addDatabase(conn_type);
db->setDatabaseName(dbname);
if (!db.get()->open)
db.reset();
}
return db;
}
bool runQuery(const Qstring& sql)
{
//How does SQLite know which database to run this SQL statement against ?
//How to iterate over the results of the run query?
}
bool runPreparedStmtQuery(const QString query_name, const QString& params)
{
//How does SQLite know which database to run this SQL statement against ?
//How do I pass parameters (say a comma delimited list to a prepared statement ?
//How to iterate over the results of the run query?
}
bool doBulkInsertWithTran(const Qstring& tablename, const MyDataRows& rows)
{
//How does SQLite know which database to run this SQL statement against ?
//How to start/commit|rollback
}
은 (아마도를 제외하고, 나는 위의 각 기능을 구현하는 올바른 와트 될 것을 요구하고 명확하지 않다
첫 번째 - 그것이 물론 더 좋을 수 없다면).[편집]
명시 적으로 (이 이미 SQL 쿼리에서 수행 된 테이블을 지정하는 요구 사항을 제거하여설명했습니다 질문 - 나는 잊었 감사를 기본적 Qt를함으로써 톰
QSqlDatabase 객체에서 직접 exec()를 호출하여 쿼리를 실행할 수도 있습니다. 물론 이것은 준비된 명령문을 실행하지 않을 때만 사용할 수 있습니다. 아직도 준비된 진술을 읽는 중 .. –
준비된 진술은 어떻습니까? –