有人肯要我了。哈哈。作为一个小白。我要为未来的工作做好一些准备啊!
今天看到一个ahk的小帖子 记录下来:http://ahk.5d6d.com/viewthread.php?tid=1165
ahk 存储数据的各种方法
[ 读写文本文件 ]
相关命令: FileAppend, FileRead, FileReadLine, Loop
最简单的办法, 没格式要求, 可根据自己爱好使用符号分隔数据或按行分隔数据或其它. 缺点是检索和修改不咋方便.
示例
; 每行存储一个用户信息, 每个用户信息用逗号分隔
user = helfee,male,18`nBLooM2,male,24
; 写入当前目录的 user.lst 文件中, 当然这个文件名可以随便取
FileAppend, %user%, user.lst
; 循环读取 user.lst 文件, 每次读取一行
Loop, Read, user.lst
{
; 解析每一行的内容, 按逗号分隔
Loop, Parse, A_LoopReadLine, CSV
{
; 输出数据
MsgBox, %A_LoopField%
}
}
[ 读写 ini 文件 ]
相关命令: iniRead, iniWrite, iniDelete
拿来做简单的配置文件最方便了, 用起来也很容易.
示例
; 在当前目录的 settings.ini 文件中的 login_section 段中设置 user_name 的值为 helfee
; 如果没有自动新建
IniWrite, helfee, settings.ini, login_section, user_name
IniWrite, 999, settings.ini, login_section, password
; 读取用户名, 存储 user_name 变量中并输出
IniRead, user_name, settings.ini, login_section, user_name
MsgBox, %user_name%
; 删除 settings.ini 文件中 user_name 这一行
IniDelete, settings.ini, login_section, user_name
; 再次读取会读取失败
IniRead, user_name, settings.ini, login_section, user_name
; 输出 ERROR
MsgBox, %user_name%
[ 读写 xml 文件 ]
相关库文件: xpath.ahk
官网论坛链接: http://www.autohotkey.com/forum/topic17549.html
以 xpath 的方式读写 xml 文件, 通用性好, 批量操作方便. 缺点是要知道 xpath 语法规则, 另外这个库貌似还有点小问题, 比如遇到有注释的 xml 文件有可能就 bug 了.
示例猛插这里.
xml 及 xpath 相关知识轻抚这里.
[ 读写 json 格式 ]
相关库文件: json.ahk
官网论坛链接: http://www.autohotkey.com/forum/topic34565.html
以 json 格式读写数据, json 格式貌似在 javascript 中广泛使用. 不过这个库只能读写, 不能检索.
示例
; 添加引用
#Include json.ahk
; 建一个 json 格式的数据
; 第一对小括号是在 ahk 中支持多行文本的方法
; 第一对大括号表示 json 数据开始, json 数据以 key: value 的形式保存, ahk 中貌似必须加引号
; 第一对中括号表示这是一个数组
; 中括号里面的每个大括号表示一个实体
user_list =
(
{
"user_list":
[{
"name": "helfee",
"sex": "male",
"age": 18
},
{
"name": "BLooM2",
"sex": "male",
"age": "24"
}]
}
)
; 读取数组第二个元素的 name 属性
MsgBox % json(user_list, "user_list[1].name")
; 修改第一个元素的 age 属性为 22
json(user_list, "user_list[0].age", 22)
; 写入文件保存
FileAppend, %user_list%, user_list.lst
json 相关知识敲这里.
[ 操作 Access 或 Excel ]
官网相关帖子: http://www.autohotkey.com/forum/topic16565.html
貌似是利用 COM 那个库然后通过 ADO 来操作, 没看懂, 有兴趣的可以去翻翻.
[ 操作 SQLite ]
相关库: SQLite.ahk
相关文件: sqlite3.exe, sqlite3.dll. 官网下载
官网相关帖子: http://www.autohotkey.com/forum/topic12752.html
建数据库需要 sqlite3.exe , 如果单独只要 CRUD 操作的话只用 sqlite3.dll 就行了. 大致原理是 DllCall (其实这东西也是超有用的样子...). 如果需要对大量数据进行存储, 检索等操作, 可以考虑这个.
示例
; 保证 sqlite3.exe 和 sqlite3.dll 在同一目录
; 添加引用
#Include SQLite.ahk
; 这个是建立一张 user 表, 有 3 列, 的 sql 语句
sql := "create table user(name, sex, age);"
; 利用上面建表的语句建立数据库叫 test.db , 同时返回一个值表示执行是否出错
has_error := _SQLite_SQLiteExe("test.db", sql, output)
; 如果返回值不为 0 表示出错, 为了方便下面的都没做判断了
if (has_error <> 0)
{
; $SQLITE_s_ERROR 是全局变量, 保存当前错误信息
MsgBox % $SQLITE_s_ERROR "`n" output
Return
}
; 初始化, 这个是必须的, 否则运行下面的脚本直接 over
has_error := _SQLite_Startup()
; 读取 test.db 文件
has_error := _SQLite_OpenDB("test.db")
; 插入两条数据, 第一个参数就写 -1 就可以了
has_error := _SQLite_Exec(-1, "insert into user values('helfee', 'male', 18)")
has_error := _SQLite_Exec(-1, "insert into user values('BLooM2', 'male', 24)")
; 再读取所有出来, 后面几个变量的用处同变量名
has_error := _SQLite_GetTable(-1, "select * from user", result, row_count, col_count)
; 查询结果行数
MsgBox % row_count
; 查询结果列数
MsgBox % col_count
; 查询结果, 每行存储一条数据, 数据用 | 分隔, 第一行存储的是列名
Loop, Parse, result, `n
{
Loop, Parse, A_LoopField, |
{
MsgBox % A_LoopField
}
}
; 关闭数据库连接
has_error := _SQLite_CloseDB(-1)
has_error := _SQLite_ShutDown()
复制代码
SQLite Getting Start (英文, 如果英文不太好使用灵格斯词霸将黑体看一遍大致就能用了, 也许...)
[ 操作 MySQL ]
官网相关帖子: http://www.autohotkey.com/forum/topic12482.html (看后面 PhiLho 的那帖)