代码拉取完成,页面将自动刷新
#
# 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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。