ahk

有人肯要我了。哈哈。作为一个小白。我要为未来的工作做好一些准备啊!

今天看到一个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 的那帖)

 

 

你可能感兴趣的:(sql,json,mysql,sqlite,Excel)