func HttpFileHandler4(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Access-Control-Allow-Origin", "*")
	db, e := sql.Open("mysql", "root:1234@tcp(localhost:3306)/mysql?charset=utf8")
    if e != nil { //如果连接出错,e将不是nil的
        print("ERROR?")
        return
	}

    // 提醒一句, 运行到这里, 并不代表数据库连接是完全OK的, 因为发送第一条SQL才会校验密码 汗~!
    _, e2 := db.Query("select 1")
    if e2 == nil {
		println("DB OK")
		ttt,err := db.Exec("USE stock")
		if err != nil {
			print("ERROR?")
			return
		}
		fmt.Print(ttt)
        rows, e := db.Query("SELECT date,open,high,low,close,volume FROM `2015tw`;")
        if e != nil {
			fmt.Print("query error!!%v\n", e)
			
            return
		}
		fmt.Print(rows)
        if rows == nil {
            print("Rows is nil")   
            return
		}
	
		var first int
		first=0
		fmt.Fprintln(w,"[")
		for rows.Next() { //跟java的ResultSet一样,需要先next读取
			if first!=0{
				if rows.Next()!=false{
					fmt.Fprintln(w,",")
				}
			}
			if first==0{
				first=1
			}
		
			
            stock := new(Stock)
			// rows貌似只支持Scan方法 继续汗~! 当然,可以通过GetColumns()来得到字段顺序

            row_err := rows.Scan(&stock.Date,&stock.Open,&stock.High,&stock.Low,&stock.Close,&stock.Volume)
            if row_err != nil {
				//print("Row error!!")
				fmt.Fprintln(w,"]")
                return
			}
			fmt.Fprint(w,"[")
			tm2, _ := time.Parse("2006-01-02 15:04:05", strings.Replace(getFieldString(stock, "Date"), "/", "-", 2)+" 00:00:00")
	
			//fmt.Println(fmt.Sprint((int64(tm2.Unix()))))
			
			//fmt.Print(int32(tm2.Unix()))
			//fmt.Println(strings.Replace(getFieldString(stock, "Date"), "/", "-", 2)+" 00:00:00")
			//fmt.Print(int32(tm2.Unix()))
			fmt.Fprint(w,fmt.Sprint((int64(tm2.Unix()*1000)))+",")比照
			fmt.Fprint(w,getFieldString(stock, "Open")+",")
			fmt.Fprint(w,getFieldString(stock, "High")+",")
			fmt.Fprint(w,getFieldString(stock, "Low")+",")
			fmt.Fprint(w,getFieldString(stock, "Close")+",")
			fmt.Fprint(w,getFieldString(stock, "Volume"))
			fmt.Fprintln(w,"]")
			
			// fmt.Fprintln(w,checkCount(&rows))
            // b, _ := json.Marshal(stock)
			// fmt.Println(string(b)) // 这里没有判断错误, 呵呵, 一般都不会有错吧
			//fmt.Fprint(w,string(b))
        }
		fmt.Fprintln(w,"]")
	
    }

}