SQLite Forum

sqlite3_bind_parameter_count question
Login

sqlite3_bind_parameter_count question

(1) By anonymous on 2021-11-24 10:42:53 [link]

Hello. I've encountered inconsistent behaviour with SQLite and wanted to get some clarification here.

Basically, `sqlite3_bind_parameter_count` returns incorrect count for an SQL with multiple statements(separated by semicolon)

Example:
```
CREATE TABLE IF NOT EXISTS test(id);
INSERT INTO test VALUES(?);
INSERT INTO test VALUES(?);
```

Calling `sqlite3_prepare_v2` and then `sqlite3_bind_parameter_count` yields 0 parameter count, while it should be 2.

Is this intended behaviour? If so, how do I get the actual parameter count?

(2) By Stephan Beal (stephan) on 2021-11-24 11:09:07 in reply to 1 [link]

> Is this intended behaviour?

Reread the docs for the prepare APIs. They only prepare single statements. Any statement after the first one is ignored.

(4) By ddevienne on 2021-11-24 12:29:53 in reply to 2 [link]

More precisely, look at the last *out* param of `sqlite3_prepare_v2(..., pzTail)`,  
which tells you where SQLite stopped when preparing the *1st* statement of your SQL *script*.  
Which allows you to *prepare* the *next* statement in your script, and so on...

(5) By anonymous on 2021-11-24 16:16:57 in reply to 4

Thanks for replies. Should've read the docs more carefully.

(3) By Gunter Hick (gunter_hick) on 2021-11-24 11:36:14 in reply to 1 [link]

Prepare each statement separately.