Вверх ↑
Этот топик читают: Гость
Ответов: 952
Рейтинг: 4
#1231: 2014-05-03 00:38:13 ЛС | профиль | цитата
Уважаемые, требуется совет.
Есть прога-оболочка для БД. При запуске проги - открываем БД и до закрытия проги все запросывыборки идут к ней. Насколько я понял почитав эту тему - я не совсем верно сделал. Надо открывать БД и кормить ей запрос непосредственно после нажатия кнопки ПоискВыборка или тому подобных, и закрывать коннект после выполнения запросавыборки.
Так?
------------ Дoбавленo в 00.38:
Т.е. примерно так?
Add(MultiElementEx,13483641,560,665)
{
}
BEGIN_SDK
Add(EditMultiEx,12882561,21,21)
{
Width=328
Height=389
}
Add(GlobalVar,15661717,182,126)
{
Name="Path"
Data=String()
}
Add(InfoTip,1644660,98,42)
{
Info=#13:Открываем БД.|27:Если нет БД с таким именем,|31:то она автоматически создается.|34:В глобальной переменной запоминаем|26:идентификатор открытой БД.|
Font=[MS Sans Serif,8,0,255,1]
Frame=3
Width=239
Height=193
}
Add(SQLite_DB,9352304,182,168)
{
link(onOpen,9859476:doValue,[(226,174)(226,167)])
link(onError,16690661:doMessage,[(228,181)(228,195)])
link(FileName,15661717:Var,[])
}
Add(GlobalVar,9859476,238,161)
{
Name="dbHandle"
}
Add(Hub,6711625,126,168)
{
OutCount=3
link(onEvent1,9352304:doOpen,[])
link(onEvent2,9133703:doExec,[(163,181)(163,286)])
link(onEvent3,16128910:doClose,[(153,188)(153,377)])
}
Add(Message,16690661,241,189)
{
Caption="Error"
}
Add(SQLite_Exec,9133703,184,280)
{
SQL="блаблаблабла"
link(dbHandle,5832250:Var,[(190,270)(197,270)])
}
Add(GlobalVar,5832250,191,252)
{
Name="dbHandle"
}
Add(SQLite_DB,16128910,189,364)
{
link(FileName,653395:Var,[])
}
Add(GlobalVar,653395,189,329)
{
Name="Path"
Data=String()
}
END_SDK


карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1232: 2014-05-03 13:55:52 ЛС | профиль | цитата
Если очень хочется, то
code_33530.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_33530.txt [1.3KB] [442]
Ответов: 952
Рейтинг: 4
#1233: 2014-05-03 16:51:37 ЛС | профиль | цитата
В смысле очень хочется? Всё таки правильнее держать коннект открытым всё время работы в проге? Или открывать-запрос-закрывать?
У меня в проге-оболочке одновременно сидят юзеров 10-15. У всех естественно открыт коннект. Периодически локалка в конторе лагает и коннект как-бы отваливается. Приходится презапускать прогу.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1234: 2014-05-04 11:47:00 ЛС | профиль | цитата
http://habrahabr.ru/post/149356/
http://www.sqlite.org/sharedcache.html
------------ Дoбавленo в 11.47:
user_asm писал(а):
У всех естественно открыт коннект.
И у всех, естественно, нет обработки точек onError.
А эти точки вовсе не для красоты и не прихоть автора компонентов.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 48
Рейтинг: 12
#1235: 2014-06-01 22:51:59 ЛС | профиль | цитата
Требуется помощь. Как подключить DSQLITE_OBJ,3_7_2_OBJ к Дельфи 7?
Дельфи 7 подключен строкой "%fname%" -M "-UCrogram FilesBorlandDelphi7Lib" "-UCrogram FilesBorlandkol_hiasm"
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1236: 2014-06-01 23:09:30 ЛС | профиль | цитата
По образу и подобию.
shonyi_1.png
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1shonyi_1.png [17.2KB] [878]
Ответов: 48
Рейтинг: 12
#1237: 2014-06-02 11:52:57 ЛС | профиль | цитата
Благодаря Вашей помощи удалось подключить Дельфи 7, а также DSQLITE_OBJ,3_7_2_OBJ к дельфи. Здесь проблем нет уж давно. А к дельфи 7 все равно не получается. Скорее всего это не возможно.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1238: 2014-06-02 12:53:35 ЛС | профиль | цитата
Shonyi писал(а):
А к дельфи 7 все равно не получается. Скорее всего это не возможно.
Ну-ну.
У меня возможно, а у тебя нет ?
Моя командная строка писал(а):
"%fname%" "-UCrogram FilesBorlandDelphi7Lib" "-UC:workkol_hiasm" -DSQLITE_OBJ -Q -$O+ "-E%opath%.

Мой текст из окна "Отладка" писал(а):
Подготовка к сборке проекта...
Генерация кода целевого языка
Компоновка проекта...
Command line: DCC32.EXE "C:HiAsm185Elementsdelphicodeclinica_test.dpr" "-UCrogram FilesBorlandDelphi7Lib" "-UC:workkol_hiasm" -DSQLITE_OBJ -Q -$O+ "-EC:HiAsm185Projectsclinica.
Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
77135 lines, 0.39 seconds, 431156 bytes code, 43185 bytes data.
Сборка завершена.

shonyi_2.png
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
2
файлы: 1shonyi_2.png [50.9KB] [1026]
Голосовали:Shonyi, Gunnman
Ответов: 48
Рейтинг: 12
#1239: 2014-06-02 15:30:22 ЛС | профиль | цитата
Методом проб и ошибок, понял, что проблема скорее всего в "kol_hiasm". Найдя 2 варианта, получил два разных отрицательных результата. Теперь проблема, нужен правильный "kol_hiasm". Tad не могли бы Вы сбросить свой "kol_hiasm".
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1240: 2014-06-02 17:01:15 ЛС | профиль | цитата
В файлообменнике на 11 странице (давно лежит) http://forum.d2h.ru/forum_serv.php?q=56&id=3547
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 16884
Рейтинг: 1239
#1241: 2014-06-03 21:26:25 ЛС | профиль | цитата
2014-04-04.
http://www.sqlite.org/2014/sqlite-dll-win32-x86-3080403.zip
DLL для SQLite версии библиотеки 3.8.4.3 для 32-битных процессоров x86 с использованием Win32 API.
EXPORTS
sqlite3_aggregate_context
sqlite3_aggregate_count
sqlite3_auto_extension
sqlite3_backup_finish
sqlite3_backup_init
sqlite3_backup_pagecount
sqlite3_backup_remaining
sqlite3_backup_step
sqlite3_bind_blob
sqlite3_bind_double
sqlite3_bind_int
sqlite3_bind_int64
sqlite3_bind_null
sqlite3_bind_parameter_count
sqlite3_bind_parameter_index
sqlite3_bind_parameter_name
sqlite3_bind_text
sqlite3_bind_text16
sqlite3_bind_value
sqlite3_bind_zeroblob
sqlite3_blob_bytes
sqlite3_blob_close
sqlite3_blob_open
sqlite3_blob_read
sqlite3_blob_reopen
sqlite3_blob_write
sqlite3_busy_handler
sqlite3_busy_timeout
sqlite3_cancel_auto_extension
sqlite3_changes
sqlite3_clear_bindings
sqlite3_close
sqlite3_close_v2
sqlite3_collation_needed
sqlite3_collation_needed16
sqlite3_column_blob
sqlite3_column_bytes
sqlite3_column_bytes16
sqlite3_column_count
sqlite3_column_database_name
sqlite3_column_database_name16
sqlite3_column_decltype
sqlite3_column_decltype16
sqlite3_column_double
sqlite3_column_int
sqlite3_column_int64
sqlite3_column_name
sqlite3_column_name16
sqlite3_column_origin_name
sqlite3_column_origin_name16
sqlite3_column_table_name
sqlite3_column_table_name16
sqlite3_column_text
sqlite3_column_text16
sqlite3_column_type
sqlite3_column_value
sqlite3_commit_hook
sqlite3_compileoption_get
sqlite3_compileoption_used
sqlite3_complete
sqlite3_complete16
sqlite3_config
sqlite3_context_db_handle
sqlite3_create_collation
sqlite3_create_collation16
sqlite3_create_collation_v2
sqlite3_create_function
sqlite3_create_function16
sqlite3_create_function_v2
sqlite3_create_module
sqlite3_create_module_v2
sqlite3_data_count
sqlite3_db_config
sqlite3_db_filename
sqlite3_db_handle
sqlite3_db_mutex
sqlite3_db_readonly
sqlite3_db_release_memory
sqlite3_db_status
sqlite3_declare_vtab
sqlite3_enable_load_extension
sqlite3_enable_shared_cache
sqlite3_errcode
sqlite3_errmsg
sqlite3_errmsg16
sqlite3_errstr
sqlite3_exec
sqlite3_expired
sqlite3_extended_errcode
sqlite3_extended_result_codes
sqlite3_file_control
sqlite3_finalize
sqlite3_free
sqlite3_free_table
sqlite3_get_autocommit
sqlite3_get_auxdata
sqlite3_get_table
sqlite3_global_recover
sqlite3_initialize
sqlite3_interrupt
sqlite3_last_insert_rowid
sqlite3_libversion
sqlite3_libversion_number
sqlite3_limit
sqlite3_load_extension
sqlite3_log
sqlite3_malloc
sqlite3_memory_alarm
sqlite3_memory_highwater
sqlite3_memory_used
sqlite3_mprintf
sqlite3_mutex_alloc
sqlite3_mutex_enter
sqlite3_mutex_free
sqlite3_mutex_leave
sqlite3_mutex_try
sqlite3_next_stmt
sqlite3_open
sqlite3_open16
sqlite3_open_v2
sqlite3_os_end
sqlite3_os_init
sqlite3_overload_function
sqlite3_prepare
sqlite3_prepare16
sqlite3_prepare16_v2
sqlite3_prepare_v2
sqlite3_profile
sqlite3_progress_handler
sqlite3_randomness
sqlite3_realloc
sqlite3_release_memory
sqlite3_reset
sqlite3_reset_auto_extension
sqlite3_result_blob
sqlite3_result_double
sqlite3_result_error
sqlite3_result_error16
sqlite3_result_error_code
sqlite3_result_error_nomem
sqlite3_result_error_toobig
sqlite3_result_int
sqlite3_result_int64
sqlite3_result_null
sqlite3_result_text
sqlite3_result_text16
sqlite3_result_text16be
sqlite3_result_text16le
sqlite3_result_value
sqlite3_result_zeroblob
sqlite3_rollback_hook
sqlite3_rtree_geometry_callback
sqlite3_set_authorizer
sqlite3_set_auxdata
sqlite3_shutdown
sqlite3_sleep
sqlite3_snprintf
sqlite3_soft_heap_limit
sqlite3_soft_heap_limit64
sqlite3_sourceid
sqlite3_sql
sqlite3_status
sqlite3_step
sqlite3_stmt_busy
sqlite3_stmt_readonly
sqlite3_stmt_status
sqlite3_strglob
sqlite3_stricmp
sqlite3_strnicmp
sqlite3_table_column_metadata
sqlite3_test_control
sqlite3_thread_cleanup
sqlite3_threadsafe
sqlite3_total_changes
sqlite3_trace
sqlite3_transfer_bindings
sqlite3_update_hook
sqlite3_uri_boolean
sqlite3_uri_int64
sqlite3_uri_parameter
sqlite3_user_data
sqlite3_value_blob
sqlite3_value_bytes
sqlite3_value_bytes16
sqlite3_value_double
sqlite3_value_int
sqlite3_value_int64
sqlite3_value_numeric_type
sqlite3_value_text
sqlite3_value_text16
sqlite3_value_text16be
sqlite3_value_text16le
sqlite3_value_type
sqlite3_vfs_find
sqlite3_vfs_register
sqlite3_vfs_unregister
sqlite3_vmprintf
sqlite3_vsnprintf
sqlite3_vtab_config
sqlite3_vtab_on_conflict
sqlite3_wal_autocheckpoint
sqlite3_wal_checkpoint
sqlite3_wal_checkpoint_v2
sqlite3_wal_hook
sqlite3_win32_mbcs_to_utf8
sqlite3_win32_set_directory
sqlite3_win32_sleep
sqlite3_win32_utf8_to_mbcs
sqlite3_win32_write_debug
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Shonyi
Ответов: 655
Рейтинг: 18
#1242: 2014-06-27 01:58:57 ЛС | профиль | цитата
Добрый день!

Гуру Sqlite нужен ваш совет!

Есть КПП на объекте через него каждый день проезжает кучу машин, стоит задача записывать номера машин проехавших через КПП.
Есть комплекс распознавания номеров с 2мя камерами, ПО данного комплекса отдает данные в виде gosnom=x444ma87.

Эти данные пишутся в sqlite
Таблица cars:
gosnom text, incom text, outcom text.
Где auto -номер авто, incom -время въезда, outcom время выезда.

В день в среднем не менее 500 новых строк в БД.

Периодически web сервером из данной БД делаются некоторые селекты типа:

(запросы писал на память исходник не под рукой)

select * from cars where gosnom like "%345%177";

select count(*) from cars where strftime('2014-06-21');

select * from cars where incom between strftime('2014-03-21') and strftime('2014-06-26');

Читал что если не делать индексы в таблицах то с увеличением данных в БД запросы будут выполняться медленнее.

Прошу знающих объяснить что это за индексы? как их создавать и как ими пользоваться? что такое PRIMARY KEY...
Читаю ман по sqlite не понимаю, потому что с базами начал работать совсем недавно.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1243: 2014-06-27 09:50:41 ЛС | профиль | цитата
CREATE INDEX
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 758
Рейтинг: 112
#1244: 2014-06-27 15:08:51 ЛС | профиль | цитата
Tad, Вот только не хватает описания использования с помощью INDEXED BY. Можете немного рассказать, как с помощью INDEXED BY ускорить работу запроса
------------ Дoбавленo в 15.08:
Кстати отыскал описание патча для SQLite, который позволяет функциям UPPER, LOWER, LIKE и GLOB корректно работать с русскими буквами
[burl=http://forum.sources.ru/index.php?showtopic=386692]Посмотреть[/burl]
Там и скомпилированный SQLite.dll можно скачать
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#1245: 2014-06-27 17:01:58 ЛС | профиль | цитата
miver писал(а):
не хватает описания использования с помощью INDEXED BY
INDEXED BY <имя индексного файла>применяется, когда одна и та же таблица имеет несколько индексных файлов, для четкого указания, какой индексный файл использовать в запросе.

Кстати Gunnman,
Gunnman писал(а):
Таблица cars:
gosnom text,
incom text,
outcom text
я бы применил
CREATE TABLE IF NOT EXISTS cars(
gosnom text, 
incom REAL,
outcom REAL);
Это даст возможность контролировать дату и время въезда и выезда с точностью до секунды.

------------ Дoбавленo в 17.01:
miver, вот пример без индексирования
SELECT * FROM COMPANY;

ID NAME AGE ADDRESS SALARY
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0

и с индексированием по полю SALARY (зарплата)
SELECT * FROM COMPANY INDEXED BY salary_index ;
ID NAME AGE ADDRESS SALARY
7 James 24 Houston 10000.0
2 Allen 25 Texas 15000.0
1 Paul 32 California 20000.0
3 Teddy 23 Norway 20000.0
6 Kim 22 South-Hall 45000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0

В чем разница ?
Для получения такого же эффекта без индексации пришлось бы применять запрос вида:
SELECT * FROM COMPANY ORDER BY SALARY;
Который будет выполняться дольше.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:miver
Сообщение
...
Прикрепленные файлы
(файлы не залиты)