aboutsummaryrefslogtreecommitdiff
path: root/sqlite3.go
diff options
context:
space:
mode:
authormattn <mattn.jp@gmail.com>2011-12-03 04:59:22 -0800
committermattn <mattn.jp@gmail.com>2011-12-03 04:59:22 -0800
commit7d293624246e5f0b537d978ae0f42261b1538284 (patch)
treee5b9dbd678b62df3ca49d721a7c58c1797c99a70 /sqlite3.go
parentadd README.mkd (diff)
parentallow to insert zero-length strings into database (diff)
downloadgolite-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.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/sqlite3.go b/sqlite3.go
index f879718..364e8c1 100644
--- a/sqlite3.go
+++ b/sqlite3.go
@@ -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 {