Comments (3)
As discussed in #933, there is currently a bug in this library where passing multiple statements to Query
does not work - only the last will actually be executed. I suggest splitting these statements and using db.Begin
or db.Conn
.
Also, as a reminder, you should always check rows.Err()
after iterating.
c, err := db.Conn(ctx)
if err != nil {
fmt.Printf("error: %v\n", err)
return
}
defer c.Close()
if _, err := c.ExecContext(ctx, "DROP TABLE IF EXISTS temp.deleted_watchtimes"); err != nil {
fmt.Printf("error: %v\n", err)
return
}
if _, err := c.ExecContext(ctx, "CREATE TEMP TABLE deleted_watchtimes (row_id INTEGER)"); err != nil {
fmt.Printf("error: %v\n", err)
return
}
defer c.ExecContext(ctx, "DROP TABLE temp.deleted_watchtimes")
if _, err := c.ExecContext(ctx, `
WITH cte AS (SELECT value FROM JSON_EACH(:names))
INSERT
INTO temp.deleted_watchtimes
SELECT *
FROM cte`,
sql.Named("names", `["a","b"]`),
); err != nil {
fmt.Printf("error: %v\n", err)
return
}
rows, err := c.QueryContext(ctx, "SELECT * FROM temp.deleted_watchtimes")
if err != nil {
fmt.Printf("error: %v\n", err)
return
}
defer rows.Close()
for rows.Next() {
var res string
err := rows.Scan(&res)
if err != nil {
fmt.Printf("error: %v\n", err)
return
}
fmt.Println(res)
}
if err := rows.Err(); err != nil {
fmt.Printf("error: %v\n", err)
return
}
from go-sqlite3.
Thank you for the good response. Sadly I'm currently using https://github.com/qustavo/dotsql in place of stored procedures since I don't want sql statements scattered throughout my code. I'll keep an eye on this issue so I know when it's resolves so I can add it back in because I would rather use this package than the other, since I feel this one is faster and more stable.
Also what is the reason for the rows.Err()/row.Err()
check? The docs say If this error is not nil, this error will also be returned from Scan
, so I would assume that my error checking on scans would catch the same error.
from go-sqlite3.
rows.Next
will return false if it encounters an error, at which point rows.Scan
is not called.
Next prepares the next result row for reading with the Scan method. It returns true on success, or false if there is no next result row or an error happened while preparing it. Err should be consulted to distinguish between the two cases.
from go-sqlite3.
Related Issues (20)
- Error "database is locked" in wal mode HOT 1
- Changing PRAGMA user_version via placeholders does not work; Without placeholders it works fine HOT 2
- In-memory database access fails with multiple goroutines HOT 4
- v3.45.0 release HOT 3
- v3.45.1 release HOT 1
- Scanning of timestamps not working when using "with time zone"
- Support for custom window functions
- Drop static_mock.go
- Getting Errors with go-sqlite3 HOT 4
- env “TMPDIR" can't change the tmp store diretory HOT 7
- "NOT json_valid(NULL)" unexpected empty result (works in CLI) HOT 2
- docker build fail undefined: sqlite3.Error HOT 2
- Database file does not get created when using connection string HOT 4
- Cannot read result row of pragma wal_checkpoint HOT 4
- importing go-sqlite hangs my application!!?? HOT 2
- Inconsistent parsing of DATETIME type, causing errors HOT 7
- C code errors on linux amd64
- exec for update does not correctly return sql.Results HOT 1
- Can't seem to fuzz SQLite?? HOT 1
- sqlite3 in-memory mode deletes data and releases memory
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-sqlite3.