MORM_DB是一个为MTASA(Multi Theft Auto: San Andreas)开发的Lua ORM(对象关系映射)库,用于简化数据库操作。
- 面向对象的数据库操作接口
- 支持自动迁移数据库结构
- 支持事务处理
- 支持链式调用
- 支持同步和异步查询
- 丰富的数据类型支持
- 完善的错误处理和数据验证
将classlib.lua文件复制到你的MTASA服务器资源目录中,并在meta.xml中添加相应的引用。
class "account" {
uid = "uint32",
username = "char[32]",
password = "char[256]",
constructor = function(self, data)
if type(data) ~= "table" then return end
for k, v in pairs(data) do
self[k] = v
end
end
}db = morm:Open("sqlite", "test.db")db:Create(account):Query()local newAccount = account{
uid = 1,
username = "testuser",
password = "testpass"
}
db:Create(newAccount):Query()-- 查询所有数据
db:Select("*"):From("account"):Query()
-- 条件查询
db:Select("*"):From("account"):Where("uid", 1):Query()
-- 排序和限制结果数量
db:Select("*"):From("account"):OrderBy("uid", "DESC"):Limit(10):Query()local acc = account{
uid = 1
}
acc.username = "newusername"
db:Update(acc):Query()-- 删除表
db:Delete("account"):Query()db:BeginTransaction()
-- 执行多个操作
db:Create(account1):Query()
db:Create(account2):Query()
-- 提交事务
db:Commit()Open(dbType, ...): 打开数据库连接
Create(...): 创建表或插入数据AutoMigrate(...): 自动迁移数据库结构Delete(tableName): 删除表Drop(tableName, columnName): 删除表或列Change(tableName, columnName, newDefinition): 修改列名和定义Add(tableName, columnName, columnDefinition): 添加列Modify(tableName, columnName, newDefinition): 修改列定义Alert(tableName, columnName, newDefinition): 修改列定义(别名)
Select(selectColumn): 添加SELECT子句From(fromTable): 添加FROM子句Where(columnName, value): 添加WHERE子句OrderBy(columnName, order): 添加ORDER BY子句Limit(limit, offset): 添加LIMIT子句Table(tableNameOrTemplate): 指定表名Raw(raw, ...): 添加原始SQL语句
Find(...): 查找数据Update(...): 更新数据
Query(timedout, callback): 执行查询
BeginTransaction(): 开始事务Commit(): 提交事务Rollback(): 回滚事务
- 整数类型:
int8,int16,int24,int32,int64,uint8,uint16,uint24,uint32,uint64 - 字符串类型:
char,varchar,text,mediumtext,longtext - 浮点数类型:
float,double,decimal - 日期时间类型:
date,time,datetime,timestamp - 布尔类型:
boolean,bool - 二进制类型:
blob,mediumblob,longblob
MIT License