1
This commit is contained in:
parent
154c533e70
commit
081e27e119
@ -139,7 +139,7 @@ func (this *OldDataSet) GetRawValueByIndex(index int32) *string {
|
||||
}
|
||||
}
|
||||
|
||||
func NewDataSet(rows *sql.Rows) *OldDataSet {
|
||||
func newOldDataSet(rows *sql.Rows) *OldDataSet {
|
||||
dataSet := new(OldDataSet)
|
||||
dataSet.rows = rows
|
||||
return dataSet
|
||||
|
@ -534,7 +534,7 @@ func (this *dbPool) internalQueryEx(dataSource string, sql string, params []stri
|
||||
|
||||
var dataSet *DataSet
|
||||
if err == nil {
|
||||
dataSet = NewDataSet(rows)
|
||||
dataSet = newDataSet(rows)
|
||||
}
|
||||
freeFunc := func () {
|
||||
if dataSet != nil {
|
||||
@ -570,7 +570,7 @@ func (this *dbPool) internalQueryOne(dataSource string, sql string, params []str
|
||||
|
||||
var dataSet *DataSet
|
||||
if err == nil {
|
||||
dataSet = NewDataSet(rows)
|
||||
dataSet = newDataSet(rows)
|
||||
}
|
||||
freeFunc := func () {
|
||||
if dataSet != nil {
|
||||
|
146
new_dataset.go
Normal file
146
new_dataset.go
Normal file
@ -0,0 +1,146 @@
|
||||
package f5
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"q5"
|
||||
)
|
||||
|
||||
type NewDataSet struct {
|
||||
rows *sql.Rows
|
||||
columns []string
|
||||
values []interface{}
|
||||
numOfReaded int64
|
||||
closed bool
|
||||
}
|
||||
|
||||
//已读取函数(调用Next成功的次数)
|
||||
func (this *NewDataSet) NumOfReaded() int64 {
|
||||
return this.numOfReaded
|
||||
}
|
||||
|
||||
func (this *NewDataSet) close() {
|
||||
if this.rows != nil {
|
||||
this.rows.Close()
|
||||
}
|
||||
this.closed = true
|
||||
}
|
||||
|
||||
func (this *NewDataSet) Next() bool {
|
||||
if this.closed {
|
||||
panic("NewDataSet is closed")
|
||||
}
|
||||
ret := this.rows.Next()
|
||||
if !ret {
|
||||
return ret
|
||||
}
|
||||
this.numOfReaded += 1
|
||||
this.GetColumns()
|
||||
this.values = []interface{}{}
|
||||
for i := 0; i < len(this.columns); i++ {
|
||||
str := sql.NullString{}
|
||||
this.values = append(this.values, &str)
|
||||
}
|
||||
err := this.rows.Scan(this.values...)
|
||||
if err != nil {
|
||||
panic("NewDataSet Next error:" + err.Error())
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func (this *NewDataSet) GetColumns() []string {
|
||||
if len(this.columns) <= 0 {
|
||||
columns, err := this.rows.Columns()
|
||||
if err == nil {
|
||||
this.columns = columns
|
||||
}
|
||||
}
|
||||
return this.columns
|
||||
}
|
||||
|
||||
/*
|
||||
安全版:nil值视为""
|
||||
*/
|
||||
func (this *NewDataSet) GetValues() *[]string {
|
||||
values := []string{}
|
||||
for _, val := range this.values {
|
||||
raw_val := val.(*sql.NullString)
|
||||
if raw_val.Valid {
|
||||
values = append(values, raw_val.String)
|
||||
} else {
|
||||
values = append(values, *q5.NewEmptyStrPtr())
|
||||
}
|
||||
}
|
||||
return &values
|
||||
}
|
||||
|
||||
/*
|
||||
安全版:nil值视为""
|
||||
*/
|
||||
func (this *NewDataSet) GetByName(name string) string {
|
||||
val := this.GetRawValueByName(name)
|
||||
if val == nil {
|
||||
return ""
|
||||
} else {
|
||||
return *val
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
安全版:nil值视为""
|
||||
*/
|
||||
func (this *NewDataSet) GetByIndex(index int32) string {
|
||||
val := this.GetRawValueByIndex(index)
|
||||
if val == nil {
|
||||
return ""
|
||||
} else {
|
||||
return *val
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
!!!原始版: 调用方应处理值为nil的情况
|
||||
*/
|
||||
func (this *NewDataSet) GetRawValues() *[]string {
|
||||
values := []*string{}
|
||||
for _, val := range this.values {
|
||||
raw_val := val.(*sql.NullString)
|
||||
if raw_val.Valid {
|
||||
values = append(values, &raw_val.String)
|
||||
} else {
|
||||
values = append(values, nil)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
/*
|
||||
!!!原始版: 调用方应处理值为nil的情况
|
||||
*/
|
||||
func (this *NewDataSet) GetRawValueByName(name string) *string {
|
||||
this.GetColumns()
|
||||
for i := 0; i < len(this.columns); i++ {
|
||||
if this.columns[i] == name {
|
||||
return this.GetRawValueByIndex(int32(i))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
/*
|
||||
!!!原始版: 调用方应处理值为nil的情况
|
||||
*/
|
||||
func (this *NewDataSet) GetRawValueByIndex(index int32) *string {
|
||||
this.GetColumns()
|
||||
sql_val := this.values[index].(*sql.NullString)
|
||||
if sql_val.Valid {
|
||||
return &sql_val.String
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func newDataSet(rows *sql.Rows) *NewDataSet {
|
||||
dataSet := new(NewDataSet)
|
||||
dataSet.rows = rows
|
||||
return dataSet
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user