diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 18a0b90..5a0d328 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,13 +5,6 @@
-
-
-
-
-
-
-
@@ -34,7 +27,7 @@
-
+
@@ -46,7 +39,7 @@
-
+
@@ -77,7 +70,7 @@
-
+
@@ -86,8 +79,8 @@
-
-
+
+
@@ -108,7 +101,7 @@
-
+
@@ -128,7 +121,7 @@
-
+
@@ -227,7 +220,6 @@
-
@@ -278,6 +270,7 @@
+
@@ -481,7 +474,8 @@
-
+
+
1500458878821
@@ -658,11 +652,18 @@
1504596978308
-
+
+ 1504601110529
+
+
+
+ 1504601110529
+
+
-
+
@@ -675,14 +676,13 @@
-
-
+
-
+
@@ -724,7 +724,6 @@
-
@@ -768,7 +767,6 @@
-
@@ -900,7 +898,6 @@
-
@@ -908,7 +905,6 @@
-
@@ -916,7 +912,6 @@
-
@@ -932,7 +927,6 @@
-
@@ -948,7 +942,6 @@
-
@@ -956,7 +949,6 @@
-
@@ -964,7 +956,6 @@
-
@@ -972,7 +963,6 @@
-
@@ -980,9 +970,6 @@
-
-
-
@@ -990,7 +977,6 @@
-
@@ -1004,7 +990,7 @@
-
+
@@ -1020,7 +1006,7 @@
-
+
@@ -1030,7 +1016,7 @@
-
+
@@ -1040,7 +1026,7 @@
-
+
@@ -1054,14 +1040,7 @@
-
-
-
-
-
-
-
-
+
@@ -1073,15 +1052,15 @@
-
+
-
-
+
+
diff --git a/db.go b/db.go
index 8c75105..1baace5 100644
--- a/db.go
+++ b/db.go
@@ -17,9 +17,9 @@ type HoTimeDB struct {
LastQuery string
LastData []interface{}
ConnectFunc func(err ...*Error) *sql.DB
- LastErr Error
- limit Slice
- Tx *sql.Tx //事务对象
+ LastErr Error
+ limit Slice
+ Tx *sql.Tx //事务对象
}
@@ -31,15 +31,14 @@ func (this *HoTimeDB) SetConnect(connect func(err ...*Error) *sql.DB, err ...*Er
//事务,如果action返回true则执行成功;false则回滚
func (this *HoTimeDB) Action(action func(db HoTimeDB) bool) bool {
- db:=HoTimeDB{DB:this.DB,Cached:this.Cached}
+ db := HoTimeDB{DB: this.DB, Cached: this.Cached}
tx, err := db.Begin()
if err != nil {
this.LastErr.SetError(err)
return false
}
- db.Tx=tx
-
+ db.Tx = tx
result := action(db)
@@ -284,13 +283,12 @@ func (this *HoTimeDB) Query(query string, args ...interface{}) []Map {
return nil
}
- if this.Tx!=nil{
+ if this.Tx != nil {
resl, err = this.Tx.Query(query, args...)
- }else{
+ } else {
resl, err = this.DB.Query(query, args...)
}
-
this.LastErr.SetError(err)
if err != nil {
if err = this.DB.Ping(); err != nil {
@@ -314,20 +312,18 @@ func (this *HoTimeDB) Exec(query string, args ...interface{}) (sql.Result, Error
var e error
var resl sql.Result
-
if this.DB == nil {
err := errors.New("没有初始化数据库")
this.LastErr.SetError(err)
return nil, this.LastErr
}
- if this.Tx!=nil{
+ if this.Tx != nil {
resl, e = this.Tx.Exec(query, args...)
- }else{
+ } else {
resl, e = this.DB.Exec(query, args...)
}
-
this.LastErr.SetError(e)
//判断是否连接断开了
@@ -383,10 +379,17 @@ func (this *HoTimeDB) Select(table string, qu ...interface{}) []Map {
query += " " + qu[intQs].(string)
} else {
for i := 0; i < len(qu[intQs].(Slice)); i++ {
- if i+1 != len(qu[intQs].(Slice)) {
- query += " `" + qu[intQs].(Slice)[i].(string) + "`,"
+ k := qu[intQs].(Slice)[i].(string)
+ if strings.Contains(k, " AS ") {
+
+ query += " " + k + " "
+
} else {
- query += " `" + qu[intQs].(Slice)[i].(string) + "`"
+ query += " `" + k + "` "
+ }
+
+ if i+1 != len(qu[intQs].(Slice)) {
+ query = query + ", "
}
}
@@ -574,6 +577,7 @@ func (this *HoTimeDB) varCond(k string, v interface{}) (string, []interface{}) {
length := len(k)
if length > 4 {
def := false
+
switch Substr(k, length-3, 3) {
case "[>]":
k = strings.Replace(k, "[>]", "", -1)
@@ -588,7 +592,7 @@ func (this *HoTimeDB) varCond(k string, v interface{}) (string, []interface{}) {
where, res = this.notIn(k, v, where, res)
case "[#]":
k = strings.Replace(k, "[#]", "", -1)
- where += "`" + k + "`=" + ObjToStr(v)
+ where += " " + k + "=" + ObjToStr(v)
case "[~]":
k = strings.Replace(k, "[~]", "", -1)
where += "`" + k + "` LIKE ? "
@@ -638,6 +642,9 @@ func (this *HoTimeDB) varCond(k string, v interface{}) (string, []interface{}) {
}
}
+ } else if k == "[#]" {
+ k = strings.Replace(k, "[#]", "", -1)
+ where += " " + ObjToStr(v) + " "
} else {
//fmt.Println(reflect.ValueOf(v).Type().String())
if reflect.ValueOf(v).Type().String() == "hotime.Slice" {
diff --git a/slice.go b/slice.go
index 36662aa..7f1ea25 100644
--- a/slice.go
+++ b/slice.go
@@ -61,11 +61,6 @@ func (this Slice) Get(key int, err ...*Error) interface{} {
func (this Slice) Put(key int, value interface{}) {
this[key] = value
}
-func (this Slice) Append(value interface{}) {
-
- this = append(this, value)
-
-}
func (this Slice) GetJsonString() string {
return ObjToStr(this)