示例#1
0
func main() {
	flag.Parse()

	if *dbhost == "" || *dbname == "" || *dbuser == "" {
		flag.Usage()
		os.Exit(1)
	}

	var err os.Error
	var res *mysql.MySQLResult
	var row map[string]interface{}
	var key string
	var value interface{}
	var stmt *mysql.MySQLStatement

	// Create new instance
	db := mysql.New()

	// Connect to database
	if err = db.Connect(*dbhost, *dbuser, *dbpass, *dbname); err != nil {
		fmt.Fprintf(os.Stderr, "%v\n", err)
		os.Exit(1)
	}

	// Ensure connection is closed on exit.
	defer db.Close()

	// Use UTF8
	if _, err = db.Query("SET NAMES utf8"); err != nil {
		fmt.Fprintf(os.Stderr, "%v\n", err)
		return
	}

	// Initialise statement
	if stmt, err = db.InitStmt(); err != nil {
		fmt.Fprintf(os.Stderr, "%v\n", err)
		return
	}

	// Prepare statement
	if err = stmt.Prepare("SELECT * FROM test1 WHERE id > ? AND id < ?"); err != nil {
		fmt.Fprintf(os.Stderr, "%v\n", err)
		return
	}

	// Bind params
	stmt.BindParams(1, 5)

	// Execute statement
	if res, err = stmt.Execute(); err != nil {
		fmt.Fprintf(os.Stderr, "%v\n", err)
		return
	}

	defer stmt.Close()

	// Display results
	for {
		if row = res.FetchMap(); row == nil {
			break
		}

		for key, value = range row {
			fmt.Printf("%s:%v\n", key, value)
		}
	}
}