Ai
1 Star 0 Fork 0

CovScript 智锐编程语言/csdbc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
csdbc_mysql.csp 3.10 KB
一键复制 编辑 原始数据 按行查看 历史
李登淳 提交于 2021-04-17 19:07 +08:00 . fix error
#
# CovScript Database Connectivity: MySQL implementation
#
package csdbc_mysql
import codec.json as json
import database
import csdbc
import regex
struct record
var name = null
var data = null
end
struct column
var name = null
var type = null
var data = new string
end
function convert(stmt)
var data=new array
while !stmt.done()
var column_count=stmt.column_count()-1
var row=new array
for i=0,i<=column_count,++i
var dat=new record
dat.name=stmt.column_name(i)
dat.data=stmt.get(i)
row.push_back(dat)
end
data.push_back(row)
end
return data
end
function table_list(db)
var tables=convert(db.exec("SELECT TABLE_NAME FROM information_schema.TABLES"))
var table_list=new array
foreach row in tables
table_list.push_back(row[0].data)
end
return move(table_list)
end
function column_info(db,table)
var info=convert(db.exec("select COLUMN_NAME,COLUMN_TYPE from information_schema.COLUMNS where TABLE_NAME=\""+table+"\""))
var filter=regex.build("^(\\w+)\\(.*\\)$")
var res=new array
foreach it in info
var col=new column
col.name=it[0].data
col.type=filter.match(it[1].data).str(1)
res.push_back(move(col))
end
return move(res)
end
@begin
constant mysql_typenames = {
csdbc.sql_int:"INT",
csdbc.sql_real:"FLOAT",
csdbc.sql_text:"VARCHAR"
}.to_hash_map()
@end
@begin
constant mysql_typenames_full = {
csdbc.sql_int:"INTEGER",
csdbc.sql_real:"FLOAT",
csdbc.sql_text:"VARCHAR(255)"
}.to_hash_map()
@end
class statement extends csdbc.statement_base
var bind_cache = new array
var stmt = null
function exec() override
return convert(stmt.exec())
end
function just_exec() override
stmt.just_exec()
end
function bind(idx, val) override
bind_cache[idx] = to_string(val)
stmt.bind(idx, bind_cache[idx])
end
end
class mysql extends csdbc.database_base
var db = null
function initialize()
this.typenames = mysql_typenames
this.typenames_full = mysql_typenames_full
end
function prepare(sql) override
var stmt = new statement
stmt.stmt = db.prepare(sql)
return move(stmt)
end
function exec(sql) override
return global.convert(db.exec(sql))
end
function just_exec(sql) override
db.just_exec(sql)
end
function table_list() override
return global.table_list(db)
end
function column_info(table) override
return global.column_info(db, table)
end
end
function connect(cfg)
var ifs = iostream.ifstream(cfg)
var config = json.to_var(json.from_stream(ifs))
var adapter = new mysql
adapter.db = database.connect_ds(config.name, config.user, config.pass)
return move(adapter)
end
function connect_ds(name, user, pass)
var adapter = new mysql
adapter.db = database.connect_ds(name, user, pass)
return move(adapter)
end
function connect_str(str)
var adapter = new mysql
adapter.db = database.connect(str)
return move(adapter)
end
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/covscript/csdbc.git
git@gitee.com:covscript/csdbc.git
covscript
csdbc
csdbc
main

搜索帮助