On Sat, 7 Mar 2009 01:09:28 -0800 (PST), liubin liu
<7101...@sina.com> wrote:

>I'm very happy that my question have triggerred the wiki-FAQ's question.
>
>but if the next version could solve(settle?) the question,
>many guys will be happy, :)

In my opinion, there is no problem, so there is nothing to
solve.

By the way, there is new code in the works which will
improve the performance of COUNT(*) in some cases.
See the timeline:
http://www.sqlite.org/cvstrac/timeline
2009-Feb-24 and 2009-Feb-25

>and now, does it mean that we have to use link-list struct to write such
>kind of codes when using "sqlite3_prepare_v2() + sqlite3_step() +
>sqlite3_column_*()"?

Perhaps the sqlite3_get_table() API is what you are looking
for? http://www.sqlite.org/c3ref/free_table.html

>
>Kees Nuyt wrote:
>> 
>> On Fri, 6 Mar 2009 02:15:10 -0800 (PST), liubin liu
>> <7101...@sina.com> wrote:
>> 
>>>which func could get the number of rows?
>> 
>> There is no function to retrieve the number of rows in a
>> result set. SQLite doesn't know the number in advance, but
>> returns row by row while iterating through the tables. The
>> application can increment a row counter as needed at every
>> successful sqlite3_step() .
>> 
>> Some wrappers are able to collect all rows in a resultset in
>> a in-memory table, so they can return the number of rows.
>> 
>> You can always get the number of rows that a certain SELECT
>> statement would return at the cost of some performance:
>> 
>>    BEGIN IMMEDIATE TRANSACTION;
>>    SELECT COUNT(*) FROM x WHERE y;
>>    SELECT a,b,c FROM x WHERE y;
>>    ROLLBACK TRANSACTION;
>> 
>> You have to wrap this in a transaction to prevent other
>> connections from inserting / deleting rows between the two
>> SELECT statements.
>>  
>> http://www.sqlite.org/lang_transaction.html
>> 
>> I hope this helps and I added it to the wiki FAQ:
>> 
>> http://www.sqlite.org/cvstrac/wiki?p=SqliteWikiFaq
-- 
  (  Kees Nuyt
  )
c[_]
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to