go-mysql: database/sql 接口適配

go-mysql已經支持golang database/sql接口,並通過https://github.com/bradfitz/go-sql-test測試用例。

現在go-mysql可以直接通過golang sql接口使用,如下:

import _ "github.com/siddontang/go-mysql/mysql"
import "database/sql"

後續的使用,可以直接參考相關golang sql的教程,譬如這個

golang sql接口的兼容主要在driver.go的文件中,

go-mysql支持的dsn格式爲:

<username>:<password>@<host>:<port>/<database>

因爲在實現go-mysql的過程中,我就有意識的將一些接口設計成能跟database/sql進行適配。除了Rows接口的適配,因爲我總覺得使用起來不方便,但是通過Resultset進行適配Rows也很方便。因爲Resultset存儲了Query之後所有的數據,所以我們可以通過一個int型iterator,就可以模擬Rows接口:

func (r *mysqlRows) Close() error {
    r.iter = -1
    return nil
}

func (r *mysqlRows) Next(dest []driver.Value) error {
    if r.iter >= r.r.RowNumber() {
        return io.EOF
    }

    data := r.r.Data[r.iter]

    for i := range data {
        //set data[i] to dest[i]
    }

    r.iter++
    return nil
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章