在使用xorm中,有直接的方法返回map[string]string,返回map[string]interface{}时,返回的不是实际数据类型,下面的代码用于数据同步,可以返回实际的数据类型

func GetQueryColumns(rows *sql.Rows) ([]string, map[string]string, error) {

columnTypes, err := rows.ColumnTypes()

if err != nil {

return nil, nil, err

}

length := len(columnTypes)

columns := make([]string, length)

columnTypeMap := make(map[string]string, length)

for i, ct := range columnTypes {

columns[i] = ct.Name()

columnTypeMap[ct.Name()] = ct.DatabaseTypeName()

}

return columns, columnTypeMap, nil

}

func QueryForInterface(db *sql.DB, sqlInfo string, args ...interface{}) ([]map[string]interface{}, error) {

rows, err := db.Query(sqlInfo, args...)

defer rows.Close()

if err != nil { <