'执行SQL命令
'执行成功，返回=0 否则 ? SQLiteErrMsg( hDB ) 查看出错问题
'======================
'失败，在PB中使用回调函数方式，不可以，只运行一次，所以不可以当查询用
'但可以当成普通的执行SQL使用，比较不错
'=======================
'如果字段名特殊，如中文、关键字，加 [字段名]  就可以了。
'    '插入数据例题  SQLiteExec(hDB,"INSERT INTO test(id,name,sex) VALUES('1','Tom','M')")
'    '                                           表      字段名              值
'    '更新数据     SQLiteExec(hDB,"UPDATE test SET sex='M' WHERE name='Jerry'")
'    '                                      表        条件          更新内容
'    '删除数据      SQLiteExec(hDB,"DELETE FROM test WHERE name='Jerry'")
'    '                                             表        条件
'    '              SQLiteExec(hDB,"DELETE FROM test WHERE id IN('003','005'")
'    '                                             表        条件
'受影响的记录数，我们可以使用sqlite3_change(sqlite3 *)的API来统计上一次操作受影响的记录数。
'    sqlite3_changes(hDB)
'整理数据库 -------------------------------
'SQLiteExec(hDB,"VACUUM")
'创建表  ---------------------------------------------------------
'CREATE TABLE 新的表名(
'   ID             INT     PRIMARY KEY  NOT NULL,
'   NAME           TEXT    NOT NULL,
'   AGE            INT     NOT NULL,
'   ADDRESS        CHAR(50),
'   SALARY         REAL
')
'NULL         : 这个值为空值
'VARCHAR(n)   ：长度不固定且其最大长度为 n 的字串，n不能超过 4000。
'CHAR(n)      ：长度固定为n的字串，n不能超过 254。
'INTEGER      : 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.
'REAL         : 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.
'TEXT         : 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).
'BLOB         : 值是BLOB数据块，以输入的数据格式进行存储。如何输入就如何存储,不改  变格式。
'DATA         ：包含了 年份、月份、日期。
'TIME         ： 包含了 小时、分钟、秒。
'l  NULL     ，值是NULL
'l  INTEGER  ，值是有符号整形，根据值的大小以1,2,3,4,6或8字节存放
'l  REAL     ，值是浮点型值，以8字节IEEE浮点数存放
'l   CHAR(n)  ，字符串
'l  TEXT     ，字符串（其编码取决于DB的编码）
'l  BLOB     ，二进制表示
'布尔类型    Sqlite没有单独的布尔存储类型，它使用INTEGER作为存储类型，0为false，1为true
'Date        Sqlite没有另外为存储日期和时间设定一个存储类集，内置的sqlite日期和时间函数能够将日期和时间以TEXT，REAL或INTEGER形式存放
'            l  TEXT 作为IS08601字符串（"YYYY-MM-DD HH:MM:SS.SSS"）
'            l  REAL 从格林威治时间11月24日，4174 B.C中午以来的天数
'            l  INTEGER 从 1970-01-01 00:00:00 UTC以来的秒数
'            程序可以任意选择这几个存储类型去存储日期和时间，并且能够使用内置的日期和时间函数在这些格式间自由转换
'删除表 ---------------------------------
'DROP TABLE 表名
'事务(Transaction) 批量处理SQL语句 -----------------------------
'      SQLiteExec(hDB, "BEGIN TRANSACTION")   ' 开始一个事务
'      SQLiteExec( .....SQL)
'      ....... 大量SQL
'      SQLiteExec(hDB, "COMMIT TRANSACTION")  ' 执行事务
'      SQLiteExec(hDB, "END TRANSACTION")     ' 结束事务
Function SQLiteExec(ByVal db as SQLite3 Ptr, ByVal sSql as String) as Integer '执行SQL
   Dim aa as Integer
   sSql = StrToUtf8(sSql) & Chr(0)
   Function = sqlite3_exec(DB, ByVal StrPtr(sSQL), 0, 0, 0)
   '对于更新、删除、插入等不需要回调函数的操作，sqlite3_exec的第三、第四个参数可以传入0或者Null。
   '通常情况下sqlite3_exec返回SQLITE_OK=0的结果，非0结果可以通过errmsg来获取对应的错误描述。
End Function