// 一次性探针:在 rond 备份的 SQLite 上跑一条查询并打印结果(BLOB 打十六进制)。 package main import ( "fmt" "os" "strings" "rond-with-you/internal/rond" ) func main() { if len(os.Args) < 3 { fmt.Println(`用法: sqlprobe "SELECT ..."`) os.Exit(2) } dir, err := os.MkdirTemp("", "sqlprobe") if err != nil { panic(err) } defer os.RemoveAll(dir) db, err := rond.Open(os.Args[1], dir) if err != nil { panic(err) } defer db.Close() rows, err := db.Query(os.Args[2]) if err != nil { panic(err) } defer rows.Close() cols, _ := rows.Columns() fmt.Println(strings.Join(cols, " | ")) for rows.Next() { vals := make([]any, len(cols)) ptrs := make([]any, len(cols)) for i := range vals { ptrs[i] = &vals[i] } if err := rows.Scan(ptrs...); err != nil { panic(err) } parts := make([]string, len(cols)) for i, v := range vals { switch t := v.(type) { case nil: parts[i] = "-" case []byte: parts[i] = fmt.Sprintf("%x", t) default: parts[i] = fmt.Sprint(t) } } fmt.Println(strings.Join(parts, " | ")) } }