【问题标题】:vc++ (sqlite)how to distingush statement is SELECT - or NOT?vc++(sqlite)如何区分语句是 SELECT - 还是 NOT?
【发布时间】:2016-10-16 02:58:48
【问题描述】:

我的代码需要区分Sql语句是否为SELECT。

如果结果大于1,很容易区分select。 但是语句执行的时候没有结果,怎么区分呢?

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 等中没有任何没有列表的东西吗?

我想要正确的方法来区分 Statement 是 SELECT 还是 Not。

【问题讨论】:

    标签: c++ sqlite select


    【解决方案1】:

    还有其他返回数据的语句(例如,一些 PRAGMA),因此您无法搜索“SELECT”。

    作为documentedsqlite3_column_count()是正确的方式:

    如果 pStmt 是不返回数据的 SQL 语句(例如 UPDATE),则此例程返回 0。

    在 SQL 中,没有没有列的表。即使在实际上不查看任何数据的构造中(例如EXISTS (SELECT ...)),您也必须使用一些虚拟列。

    【讨论】:

    • 非常感谢!我想要确信没有 no-column_table。我可以毫无顾虑地完成我的项目:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2011-12-13
    • 2016-08-29
    • 2017-02-14
    • 2011-01-22
    相关资源
    最近更新 更多