воскресенье, 7 ноября 2010 г.

sqlite ест мозг вместе с freebasic II

Ха, получилось вроде. То есть оно работает :)
#include once "sqlite3.bi"
#define NULL Cast(Any Ptr,0)

dim as sqlite3 ptr db
dim as zstring ptr errMsg
dim as string database_name
Dim error_ As Integer
Dim As sqlite3_stmt Ptr sql_stat

database_name="mybase.sqlite"
if sqlite3_open( database_name, @db ) then
    print "Can't open database: "; *sqlite3_errmsg( db )
    sqlite3_close( db )
    end 1
end if
print "Using database: "; database_name
print

error_ = sqlite3_prepare(db,"SELECT result,count(*) FROM mytable GROUP BY result",-1,@sql_stat,NULL)
If (error_ <> SQLITE_OK) Then
    print "Can't prepare database: "; *sqlite3_errmsg( db )
    sqlite3_close( db )
    end 1
End If

While (sqlite3_step(sql_stat) = SQLITE_ROW)
  print "Columns = "; sqlite3_column_count(sql_stat)  
  print *sqlite3_column_name(sql_stat,0), *sqlite3_column_text(sql_stat,0)
  print *sqlite3_column_name(sql_stat,1), *sqlite3_column_text(sql_stat,1)
  
Wend

sqlite3_finalize(sql_stat)
sqlite3_close(db)

sqlite ест мозг вместе с freebasic

Суть проблемы. Есть пример с использованием sqlite3_exec, но он не возвращает результата запроса вызываемой процедуре, а (наоборот?) вызывает для каждой строки результата callback функцию. Пока речь шла об обслуживании базы и заполнения таблиц, все было хорошо.
Теперь мне нужно получить результат запроса в удобоваримом виде.
Я так понимаю, у FB (да и у С/С++) проблема в том, что нет подходящих объектов для хранения выборки.
Нашел у соседа пример с использованием sqlite3_prepare_v2 и sqlite3_step и пытаюсь затолкать в FB сейчас, прям интересно что получится.
И все равно не покидает ощущение, что как-то это ч/з задницу.

Фотографии с места аварии стали причиной обвинения в хулиганстве

1 ноября 2010 г. Фотографии, сделанные на месте аварии, в которой пострадал главком ВДВ Владимир Шаманов, стоили двум тулякам свободы

Молодые люди живут неподалеку от того места, где произошла авария. Они услышали сильный грохот, визг тормозов и пришли посмотреть, что случилось. К тому моменту информация о том, кто попал в ДТП, не получила широкого распространения. На место только-только начало съезжаться милицейское и армейское начальство.

читать подробнее

Обыкновенный фашизм

Benjamin Thomas Hobert, сотрудник германского посольства, убивший двух русских подростков на пешеходной зебре, получил год условно и лишение прав на месяц.