package db import ( "fmt" "strconv" "strings" ) func validateData(table string, keyField string, data map[string]any) (any, error) { if table == "" { return nil, fmt.Errorf("表名不能为空") } if len(data) == 0 { return nil, fmt.Errorf("数据不能为空") } if keyField == "" { return nil, fmt.Errorf("主键字段不能为空") } val, ok := data[keyField] if !ok { return nil, fmt.Errorf("缺少主键字段: %s", keyField) } if val == nil { return nil, fmt.Errorf("主键字段值不能为空") } return val, nil } // 高效 placeholder 转换 func convertPlaceholder(sql string) string { var sb strings.Builder sb.Grow(len(sql)) argIndex := 1 for i := 0; i < len(sql); i++ { if sql[i] == '?' { sb.WriteByte('$') sb.WriteString(strconv.Itoa(argIndex)) argIndex++ } else { sb.WriteByte(sql[i]) } } return sb.String() }