diff options
author | mattn <mattn.jp@gmail.com> | 2011-12-03 04:59:22 -0800 |
---|---|---|
committer | mattn <mattn.jp@gmail.com> | 2011-12-03 04:59:22 -0800 |
commit | 7d293624246e5f0b537d978ae0f42261b1538284 (patch) | |
tree | e5b9dbd678b62df3ca49d721a7c58c1797c99a70 /sqlite3.go | |
parent | add README.mkd (diff) | |
parent | allow to insert zero-length strings into database (diff) | |
download | golite-7d293624246e5f0b537d978ae0f42261b1538284.tar.gz golite-7d293624246e5f0b537d978ae0f42261b1538284.tar.xz |
Merge pull request #1 from fiber/master
inserting zero-length strings failed.
Diffstat (limited to 'sqlite3.go')
-rw-r--r-- | sqlite3.go | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -154,8 +154,13 @@ func (s *SQLiteStmt) bind(args []interface{}) error { case nil: rv = C.sqlite3_bind_null(s.s, n) case string: - b := []byte(v) - rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&b[0])), C.int(len(b))) + if len(v) == 0 { + b := []byte{0} + rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&b[0])), C.int(0)) + } else { + b := []byte(v) + rv = C._sqlite3_bind_text(s.s, n, (*C.char)(unsafe.Pointer(&b[0])), C.int(len(b))) + } case int: rv = C.sqlite3_bind_int(s.s, n, C.int(v)) case int64: @@ -213,7 +218,7 @@ func (s *SQLiteStmt) Exec(args []interface{}) (driver.Result, error) { if rv != C.SQLITE_ROW && rv != C.SQLITE_OK && rv != C.SQLITE_DONE { return nil, errors.New(C.GoString(C.sqlite3_errmsg(s.c.db))) } - return &SQLiteResult {s}, nil + return &SQLiteResult{s}, nil } type SQLiteRows struct { |