view.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package cmd
  2. import (
  3. "bufio"
  4. "database/sql"
  5. "fmt"
  6. "os"
  7. "strings"
  8. "xg_once_query/dbBase"
  9. )
  10. func view(db *sql.DB) {
  11. // 创建一个新的读取器
  12. reader := bufio.NewReader(os.Stdin)
  13. for {
  14. fmt.Print("SQL> ")
  15. input, _ := reader.ReadString(';')
  16. input = strings.TrimLeft(input, " ")
  17. fmt.Printf("SQL =%s, end \n ", input)
  18. firstSpaceIndex := strings.Index(input, " ")
  19. if firstSpaceIndex != -1 {
  20. firstWord := input[:firstSpaceIndex]
  21. if strings.HasPrefix(strings.ToLower(firstWord), "select") {
  22. dbBase.DbQuery(db, input)
  23. } else {
  24. dbBase.DbExec(db, input)
  25. }
  26. }
  27. }
  28. // go io.Copy(os.Stdout, waiter.Reader)
  29. // go io.Copy(os.Stderr, waiter.Reader)
  30. // // "golang.org/x/crypto/ssh/terminal"
  31. // //此处是关键,需要将标准输入转成标准终端输入
  32. // fd := os.Stdin.Fd()
  33. // if terminal.IsTerminal(int(fd)) {
  34. // oldState, err := terminal.MakeRaw(int(fd))
  35. // if err != nil {
  36. // zap.S().Fatalln(err)
  37. // }
  38. // defer terminal.Restore(int(fd), oldState)
  39. // }
  40. // go io.Copy(waiter.Conn, os.Stdin)
  41. // if err != nil {
  42. // panic(err)
  43. // }
  44. }