5 Star 6 Fork 2

ha666/gen_sqlx_code

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
column_info.go 2.25 KB
一键复制 编辑 原始数据 按行查看 历史
ha666 提交于 2018-11-13 14:04 +08:00 . 支持sqlserver数据库
package models
import (
"database/sql"
"gitee.com/ha666/gen_sqlx_code/utils"
"strings"
)
type ColumnInfo struct {
OrdinalPosition int
ColumnName string
ColumnNameCase string
AutoIncrement string
PK string
DataType string
DataLength int
IsNullValue string
DefaultValue string
ColumnComment string
}
func GetColumnInfos(table_name string) (column_infos []ColumnInfo, err error) {
rows, err := mainDB.Query("SELECT OrdinalPosition = a.colorder, ColumnName = a.name , AutoIncrement = CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√' ELSE '×' END, PK = CASE WHEN EXISTS ( SELECT 1 FROM sysobjects WHERE xtype = 'PK' AND name IN ( SELECT name FROM sysindexes WHERE indid IN ( SELECT indid FROM sysindexkeys WHERE id = a.id AND colid = a.colid ) ) ) THEN '√' ELSE '×' END , DataType = b.name , DecimalNumber = ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) , IsNullValue = CASE WHEN a.isnullable = 1 THEN '√' ELSE '×' END , DefaultValue = ISNULL(e.text, ''),ColumnComment = ISNULL(g.[value],'') FROM syscolumns a LEFT JOIN systypes b ON a.xusertype = b.xusertype INNER JOIN sysobjects d ON (a.id = d.id AND d.xtype = 'U' AND d.name <> 'dtproperties') LEFT JOIN syscomments e ON a.cdefault = e.id LEFT JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id LEFT JOIN sys.extended_properties f ON d.id = f.major_id AND f.minor_id = 0 WHERE d.name =? AND g.class <> 7 ORDER BY a.id, a.colorder", table_name)
defer rows.Close()
if err != nil {
return column_infos, err
}
return _ColumnInfoRowsToArray(rows)
}
func _ColumnInfoRowsToArray(rows *sql.Rows) (models []ColumnInfo, err error) {
for rows.Next() {
model := ColumnInfo{}
err = rows.Scan(&model.OrdinalPosition, &model.ColumnName, &model.AutoIncrement, &model.PK, &model.DataType, &model.DataLength, &model.IsNullValue, &model.DefaultValue, &model.ColumnComment)
if err != nil {
return models, err
}
if len(model.ColumnComment) > 0 {
model.ColumnComment = strings.Replace(model.ColumnComment, "\r", "", -1)
model.ColumnComment = strings.Replace(model.ColumnComment, "\n", "", -1)
}
model.ColumnNameCase = model.ColumnName
utils.ToBigHump(&model.ColumnNameCase)
models = append(models, model)
}
return models, err
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/ha666/gen_sqlx_code.git
git@gitee.com:ha666/gen_sqlx_code.git
ha666
gen_sqlx_code
gen_sqlx_code
73bfd39c7980

搜索帮助