#PRE_UseX64 = no ; 64位系统下工作模式最好转为32位
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <array.au3>
Local $dbFile = @ScriptDir & '\MY.DB'
If FileExists($dbFile) Then FileDelete($dbFile)
Local $my_TABLE = '物品清单 (肉类, 水果, 蔬菜, 家具, 备注);'
_SQLite_Startup(@ScriptDir & '\sqlite3.dll') ;
If @error Then
MsgBox(16, "无法加载 SQLite3.dll", "请注意此文件是否存在并可以调用!")
Exit -1
EndIf
$hDb = _SQLite_Open($dbFile)
If @error Then
MsgBox(16, "SQLite Error", "创建数据库失败!")
Exit -1
EndIf
#region ;建立新表
_SQLite_Exec($hDB, 'CREATE TABLE IF NOT EXISTS ' & $my_TABLE) ;表不存在,则建立新表
;注意,每条SQL语句,都以分号";"为结尾.
;_SQLite_Exec($hDB, 'DROP TABLE ' & $my_TABLE & ';') ; 删除表
#endregion
#region ;插入记录
Local $sMeat = '牛肉', $sFruit = '苹果'
;Local $sEXEC = "insert into 物品清单 VALUES ('牛肉', '苹果', '白菜', '桌子', '10-2-5-1');"
; inset into ... 插入一条新记录
Local $sEXEC = "insert into 物品清单 VALUES ('" & $sMeat & "', '" & $sFruit & "', '白菜', '桌子', '3-2-5-1');"
;增加一条记录
;注意单引号的使用,尤其加入变量后,写法极为繁琐.
_SQLite_Exec($hdb, $sEXEC)
$sEXEC = "insert into 物品清单 VALUES ('猪肉', '桔子', '花菜', '椅子', '7-5-8-6');"
_SQLite_Exec($hdb, $sEXEC)
$sEXEC = "insert into 物品清单 VALUES ('', '', '生菜', '', '');"
_SQLite_Exec($hdb, $sEXEC)
#endregion
#region ;查询数据
Local $aRow, $hQuery, $sOut = '', $sQuery
_SQLite_Query($hDb, "select * from 物品清单;", $hQuery) ;查询表中所有数据
_SQLite_FetchNames ( $hQuery, $aRow) ;获取所有列名
If IsArray($aRow) Then
For $i = 0 To UBound($aRow)-1
$sOut &= @TAB & $aRow[$i]
Next
ConsoleWrite(@CRLF & '物品清单 该表所有数据如下:' & @CRLF & $sOut &@CRLF) ;先输出所有列名称
EndIf
;ConsoleWrite(@CRLF & '下面将输出表中所有数据:')
While _SQLite_FetchData($hQuery, $aRow) = $sqlite_ok;查到有效数据
$sOut = ''
For $i = 0 To UBound($aRow)-1
$sOut &= @TAB & $aRow[$i]
Next
ConsoleWrite(@CRLF & $sOut & @CRLF) ;查到并输出每一行数据
WEnd
#endregion
#region ;更新数据
$sEXEC = "UPDATE 物品清单 SET 肉类 = '羊肉', 水果 = '香蕉', 家具 = '柜子', 备注 = '17-5-8-16' WHERE 蔬菜 = '生菜';"
_SQLite_Exec($hdb, $sEXEC)
;查询更新后的数据
_SQLite_Query($hDb, "select 水果, 备注 from 物品清单 WHERE 蔬菜 = '生菜';", $hQuery) ;按需查询数据
_SQLite_FetchNames ( $hQuery, $aRow) ;获取要查询的列名
If IsArray($aRow) Then
$sOut = ''
For $i = 0 To UBound($aRow)-1
$sOut &= @TAB & $aRow[$i]
Next
ConsoleWrite(@CRLF & '按需查询到的数据:' & @CRLF & $sOut);先输出列
EndIf
While _SQLite_FetchData($hQuery, $aRow) = $sqlite_ok;查到有效数据
$sOut = ''
For $i = 0 To UBound($aRow)-1
$sOut &= @TAB & $aRow[$i]
Next
ConsoleWrite(@CRLF & $sOut & @CRLF);按行输出查到的数据
WEnd
#region
;删除上面刚更新过的那条记录
;_SQLite_Exec($hdb, "delete from 物品清单 WHERE 蔬菜 = '生菜';")
_SQLite_Close()
_SQLite_Shutdown()