[英]vc++ (sqlite)how to distingush statement is SELECT - or NOT?
我的代碼對於區分Sql語句是否為SELECT是必需的。
如果結果大於1,則很容易區分選擇。 但是執行語句時沒有結果,如何區分呢?
sqlite_stmt *some_stmt;
//case 1 : (the table has no row)
sqlite3_prepare("select * from some_table", &some_stmt);
//case 2 :
sqlite3_prepare("create table some_table2", &some_stmt);
int result = sqlite3_step(some_stmt);
結果是相同的:
SQLITE_DONE;
我可以用兩種方法來區分它,第一種是從語句中獲取子字符串。 但我不想這樣做,這似乎是錯誤的方式。 第二個是使用sqlite3_column_count()
。 通常,如果該語句為SELECT,則column_count具有一個或多個。
使用sqlite3_coulmn_count()
是否正確? 在sqlite等中沒有No-column-table嗎?
我想要正確的方法來區分Statement是否為SELECT。
還有其他返回數據的語句(例如某些PRAGMA),因此您無法搜索“ SELECT”。
如文檔所述 , sqlite3_column_count()
是正確的方法:
如果pStmt是不返回數據的SQL語句(例如UPDATE),則此例程返回0。
在SQL中,沒有像沒有列的表這樣的東西。 即使在實際上不查看任何數據的構造中(例如EXISTS (SELECT ...)
),也必須使用一些虛擬列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.