2013-12-21 2 views
1

다음과 같은 문장이 있습니다. SQLite 쿼리에 변수 삽입하기

const QString createSQL = "CREATE TABLE customer (x INTEGER PRIMARY KEY ASC, y, z);" ; 

는 또한 변수

QString name="name1"; 

내가 NAME1에 테이블 "고객"의 이름을 변경해야합니다. 변수를 위의 sqlite 쿼리에 어떻게 삽입합니까?

+0

에서

// Execute query with positional binding using positional (?) placeholders QVariantList contactValues; contactValues << 1 << "Mike" << "Chepesky"; DataAccessReply reply = sc.executeAndWait( "insert into contact (id, firstname, lastname) values (?, ?, ?)", contactValues); 

봐, 사람이 할 수없는, 그래서 'SELECT * FROM?', 예를 들면? –

+0

@laalto Ugh, 슬픈 일입니다. (문자열과 함께 별도의 "이름"유형이 있어야합니다.) –

답변

0

테이블의 이름을 변경하려면, ALTER TABLE 사용

"ALTER TABLE customer RENAME TO " + name 

를 그냥 쿼리에 테이블 이름을 삽입하기 위해 필요한 경우,

"CREATE TABLE " + name + "(x INTEGER ... 
+0

두 번째 명령문이 작동하지 않습니다. :( – DesirePRG

0

나는 당신이 테이블 이름을 변경할 수 있습니다 믿지 않는다 바운드 변수는 다음과 같이 할 수 있습니다.

QString name = "tableName"; 
QString createSQL = QString("CREATE TABLE %1 (x INTEGER PRIMARY KEY ASC, y, z)").arg(name); 

H2CO3의 의견에 대답하려면

QString queryStr = QString("SELECT * FROM TABLE %1 WHERE col = :selected").arg(name); 
QSqlQuery query(qSqlDatabase); 
query.prepare(queryStr); 

query.bindValue(":selected", "Selected Value"); 
1

이것은 문서에서 직접 가져온 것입니다.

// Execute query with positional binding using named placeholders 
QVariantList contactValues; 
contactValues << 1 << "Mike" << "Chepesky"; 
DataAccessReply reply = sc.executeAndWait(
    "insert into contact (id, firstname, lastname) values (:id, :firstname, :lastname)", 
    contactValues); 

documentation/source 음 @laalto

관련 문제