簡體   English   中英

vc ++(sqlite)如何區分語句是SELECT還是NOT?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM