|
|
|
@ -301,37 +301,64 @@ func GetData(dbName, table string, title string, where map[string]string, limit |
|
|
|
return count, info, err |
|
|
|
} |
|
|
|
|
|
|
|
var index string |
|
|
|
var rowerr error |
|
|
|
columns, _ := rows.Columns() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
columnTypes, _ := rows.ColumnTypes() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
var index string |
|
|
|
var rowerr error |
|
|
|
for rows.Next() { |
|
|
|
rowerr = rows.Scan(scanArgs...) |
|
|
|
if rowerr == nil { |
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
//达梦返回全大写字段,需先转小写
|
|
|
|
for i, colType := range columnTypes { |
|
|
|
//fmt.Printf("字段: %s, 数据库类型: %s, 扫描类型: %v\n", columns[i], colType.DatabaseTypeName(), colType.ScanType())
|
|
|
|
// 为 DECIMAL 类型创建专用的扫描变量,达梦8中如果只少于1时,前面0会丢失
|
|
|
|
if colType.DatabaseTypeName() == "DECIMAL" { |
|
|
|
var decimalStr sql.RawBytes |
|
|
|
scanArgs[i] = &decimalStr |
|
|
|
} else { |
|
|
|
var val interface{} |
|
|
|
scanArgs[i] = &val |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
rowerr = rows.Scan(scanArgs...) |
|
|
|
if rowerr == nil { |
|
|
|
for i, col := range scanArgs { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(strings.ToLower(columns[i])) |
|
|
|
//达梦返回的字段类型比较细,比如:int16、int32
|
|
|
|
info[index] = ToString(col) |
|
|
|
} else { |
|
|
|
info[index] = DmFormatDecimal(col) |
|
|
|
} |
|
|
|
} |
|
|
|
count++ |
|
|
|
} else { |
|
|
|
log.Println("ERROR", "rows scan error", rowerr, dbName, keyList, valueList) |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
rowerr = rows.Scan(scanArgs...) |
|
|
|
if rowerr == nil { |
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(columns[i]) |
|
|
|
info[index] = helper.ToString(col) |
|
|
|
} |
|
|
|
} |
|
|
|
count++ |
|
|
|
} else { |
|
|
|
log.Println("ERROR", "rows scan error", rowerr, dbName, keyList, valueList) |
|
|
|
} |
|
|
|
count++ |
|
|
|
} else { |
|
|
|
log.Println("ERROR", "rows scan error", rowerr, dbName, keyList, valueList) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if rowerr != nil { |
|
|
|
return count, info, rowerr |
|
|
|
} |
|
|
|
@ -503,37 +530,63 @@ func GetRow(dbName, table_name, alias string, titles string, with, join [][]stri |
|
|
|
return count, info, err |
|
|
|
} |
|
|
|
|
|
|
|
var index string |
|
|
|
var rowerr error |
|
|
|
columns, _ := rows.Columns() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
columnTypes, _ := rows.ColumnTypes() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
var index string |
|
|
|
var rowerr error |
|
|
|
for rows.Next() { |
|
|
|
rowerr = rows.Scan(scanArgs...) |
|
|
|
if rowerr == nil { |
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
//达梦返回全大写字段,需先转小写
|
|
|
|
for i, colType := range columnTypes { |
|
|
|
//fmt.Printf("字段: %s, 数据库类型: %s, 扫描类型: %v\n", columns[i], colType.DatabaseTypeName(), colType.ScanType())
|
|
|
|
// 为 DECIMAL 类型创建专用的扫描变量,达梦8中如果只少于1时,前面0会丢失
|
|
|
|
if colType.DatabaseTypeName() == "DECIMAL" { |
|
|
|
var decimalStr sql.RawBytes |
|
|
|
scanArgs[i] = &decimalStr |
|
|
|
} else { |
|
|
|
var val interface{} |
|
|
|
scanArgs[i] = &val |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
rowerr = rows.Scan(scanArgs...) |
|
|
|
if rowerr == nil { |
|
|
|
for i, col := range scanArgs { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(strings.ToLower(columns[i])) |
|
|
|
//达梦返回的字段类型比较细,比如:int16、int32
|
|
|
|
info[index] = ToString(col) |
|
|
|
} else { |
|
|
|
info[index] = DmFormatDecimal(col) |
|
|
|
} |
|
|
|
} |
|
|
|
count++ |
|
|
|
} else { |
|
|
|
log.Println("ERROR", rowerr) |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
for rows.Next() { |
|
|
|
rowerr = rows.Scan(scanArgs...) |
|
|
|
if rowerr == nil { |
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(columns[i]) |
|
|
|
info[index] = helper.ToString(col) |
|
|
|
} |
|
|
|
} |
|
|
|
count++ |
|
|
|
} else { |
|
|
|
log.Println("ERROR", rowerr) |
|
|
|
} |
|
|
|
count++ |
|
|
|
} else { |
|
|
|
log.Println("ERROR", rowerr) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
rows.Close() |
|
|
|
if rowerr != nil { |
|
|
|
log.Println("DB row error:", rowerr) |
|
|
|
@ -657,7 +710,6 @@ func FetchRows(dbName, table_name, alias string, titles string, with, join [][]s |
|
|
|
} |
|
|
|
|
|
|
|
if page > 0 || page_size > 0 { |
|
|
|
|
|
|
|
if page < 1 { |
|
|
|
page = 1 |
|
|
|
} |
|
|
|
@ -720,41 +772,71 @@ func FetchRows(dbName, table_name, alias string, titles string, with, join [][]s |
|
|
|
return 0, list, err |
|
|
|
} |
|
|
|
|
|
|
|
columns, _ := rows.Columns() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
|
|
|
|
var index string |
|
|
|
var rowerr error |
|
|
|
var info map[string]string |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
rowerr = rows.Scan(scanArgs...) |
|
|
|
info = make(map[string]string) |
|
|
|
if rowerr == nil { |
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
//达梦返回全大写字段,需先转小写
|
|
|
|
columns, _ := rows.Columns() |
|
|
|
|
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
columnTypes, _ := rows.ColumnTypes() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
for i, colType := range columnTypes { |
|
|
|
//fmt.Printf("字段: %s, 数据库类型: %s, 扫描类型: %v\n", columns[i], colType.DatabaseTypeName(), colType.ScanType())
|
|
|
|
// 为 DECIMAL 类型创建专用的扫描变量,达梦8中如果只少于1时,前面0会丢失
|
|
|
|
if colType.DatabaseTypeName() == "DECIMAL" { |
|
|
|
var decimalStr sql.RawBytes |
|
|
|
scanArgs[i] = &decimalStr |
|
|
|
} else { |
|
|
|
var val interface{} |
|
|
|
scanArgs[i] = &val |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
rowerr = rows.Scan(scanArgs...) |
|
|
|
info = make(map[string]string) |
|
|
|
if rowerr == nil { |
|
|
|
for i, col := range scanArgs { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(strings.ToLower(columns[i])) |
|
|
|
//达梦返回的字段类型比较细,比如:int16、int32
|
|
|
|
info[index] = ToString(col) |
|
|
|
} else { |
|
|
|
info[index] = DmFormatDecimal(col) |
|
|
|
} |
|
|
|
} |
|
|
|
count++ |
|
|
|
} else { |
|
|
|
log.Println("ERROR", rowerr) |
|
|
|
} |
|
|
|
if len(info) > 0 { |
|
|
|
list = append(list, info) |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
rowerr = rows.Scan(scanArgs...) |
|
|
|
info = make(map[string]string) |
|
|
|
if rowerr == nil { |
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(columns[i]) |
|
|
|
info[index] = helper.ToString(col) |
|
|
|
} |
|
|
|
} |
|
|
|
count++ |
|
|
|
} else { |
|
|
|
log.Println("ERROR", rowerr) |
|
|
|
} |
|
|
|
if len(info) > 0 { |
|
|
|
list = append(list, info) |
|
|
|
} |
|
|
|
count++ |
|
|
|
} else { |
|
|
|
log.Println("ERROR", rowerr) |
|
|
|
} |
|
|
|
if len(info) > 0 { |
|
|
|
list = append(list, info) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -890,34 +972,59 @@ func GetList(dbName, table string, title string, where map[string]string, limit |
|
|
|
} |
|
|
|
defer rows.Close() |
|
|
|
|
|
|
|
columns, _ := rows.Columns() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
|
|
|
|
var record map[string]string |
|
|
|
var index string |
|
|
|
for rows.Next() { |
|
|
|
//将行数据保存到record字典
|
|
|
|
err = rows.Scan(scanArgs...) |
|
|
|
record = make(map[string]string) |
|
|
|
columns, _ := rows.Columns() |
|
|
|
|
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
columnTypes, _ := rows.ColumnTypes() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
//达梦返回全大写字段,需先转小写
|
|
|
|
for i, colType := range columnTypes { |
|
|
|
//fmt.Printf("字段: %s, 数据库类型: %s, 扫描类型: %v\n", columns[i], colType.DatabaseTypeName(), colType.ScanType())
|
|
|
|
// 为 DECIMAL 类型创建专用的扫描变量,达梦8中如果只少于1时,前面0会丢失
|
|
|
|
if colType.DatabaseTypeName() == "DECIMAL" { |
|
|
|
var decimalStr sql.RawBytes |
|
|
|
scanArgs[i] = &decimalStr |
|
|
|
} else { |
|
|
|
var val interface{} |
|
|
|
scanArgs[i] = &val |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
//将行数据保存到record字典
|
|
|
|
err = rows.Scan(scanArgs...) |
|
|
|
record = make(map[string]string) |
|
|
|
|
|
|
|
for i, col := range scanArgs { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(strings.ToLower(columns[i])) |
|
|
|
//达梦返回的字段类型比较细,比如:int16、int32
|
|
|
|
record[index] = ToString(col) |
|
|
|
} else { |
|
|
|
record[index] = DmFormatDecimal(col) |
|
|
|
} |
|
|
|
} |
|
|
|
list = append(list, record) |
|
|
|
} |
|
|
|
} else { |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
//将行数据保存到record字典
|
|
|
|
err = rows.Scan(scanArgs...) |
|
|
|
record = make(map[string]string) |
|
|
|
|
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(columns[i]) |
|
|
|
record[index] = helper.ToString(col) |
|
|
|
} |
|
|
|
} |
|
|
|
list = append(list, record) |
|
|
|
} |
|
|
|
list = append(list, record) |
|
|
|
} |
|
|
|
|
|
|
|
return list, nil |
|
|
|
@ -1129,34 +1236,59 @@ func DoQuery(args ...interface{}) ([]map[string]string, error) { |
|
|
|
} |
|
|
|
defer rows.Close() |
|
|
|
|
|
|
|
columns, _ := rows.Columns() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
|
|
|
|
var record map[string]string |
|
|
|
var index string |
|
|
|
for rows.Next() { |
|
|
|
//将行数据保存到record字典
|
|
|
|
err = rows.Scan(scanArgs...) |
|
|
|
record = make(map[string]string) |
|
|
|
columns, _ := rows.Columns() |
|
|
|
|
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
columnTypes, _ := rows.ColumnTypes() |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
|
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
if DB_PROVIDER == "DmSql" { |
|
|
|
//达梦返回全大写字段,需先转小写
|
|
|
|
for i, colType := range columnTypes { |
|
|
|
//fmt.Printf("字段: %s, 数据库类型: %s, 扫描类型: %v\n", columns[i], colType.DatabaseTypeName(), colType.ScanType())
|
|
|
|
// 为 DECIMAL 类型创建专用的扫描变量,达梦8中如果只少于1时,前面0会丢失
|
|
|
|
if colType.DatabaseTypeName() == "DECIMAL" { |
|
|
|
var decimalStr sql.RawBytes |
|
|
|
scanArgs[i] = &decimalStr |
|
|
|
} else { |
|
|
|
var val interface{} |
|
|
|
scanArgs[i] = &val |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
//将行数据保存到record字典
|
|
|
|
err = rows.Scan(scanArgs...) |
|
|
|
record = make(map[string]string) |
|
|
|
|
|
|
|
for i, col := range scanArgs { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(strings.ToLower(columns[i])) |
|
|
|
//达梦返回的字段类型比较细,比如:int16、int32
|
|
|
|
record[index] = ToString(col) |
|
|
|
} else { |
|
|
|
record[index] = DmFormatDecimal(col) |
|
|
|
} |
|
|
|
} |
|
|
|
list = append(list, record) |
|
|
|
} |
|
|
|
} else { |
|
|
|
scanArgs := make([]interface{}, len(columns)) |
|
|
|
values := make([]interface{}, len(columns)) |
|
|
|
for i := range values { |
|
|
|
scanArgs[i] = &values[i] |
|
|
|
} |
|
|
|
|
|
|
|
for rows.Next() { |
|
|
|
//将行数据保存到record字典
|
|
|
|
err = rows.Scan(scanArgs...) |
|
|
|
record = make(map[string]string) |
|
|
|
|
|
|
|
for i, col := range values { |
|
|
|
if col != nil { |
|
|
|
index = helper.StrFirstToUpper(columns[i]) |
|
|
|
record[index] = helper.ToString(col) |
|
|
|
} |
|
|
|
} |
|
|
|
list = append(list, record) |
|
|
|
} |
|
|
|
list = append(list, record) |
|
|
|
} |
|
|
|
|
|
|
|
return list, nil |
|
|
|
|