Вверх ↑
Этот топик читают: Гость
Ответов: 3967
Рейтинг: 625
#1366: 2015-03-05 17:27:54 ЛС | профиль | цитата
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE
В языке C "|" - это операция "or" в Delphi. Просто интуитивно запомни, если есть параметр Flags, который может принимать комбинацию нескольких значений ("one or more"), значит применяется операция or. Операция "and" - здесь неприменима.
Gunnman писал(а):
Почему вариат с and может не работать? в документации сказано
Это следует понимать, как то, что ты можешь указать этот параметр, либо нет (и/или).
карма: 19

0
Ответов: 648
Рейтинг: 18
#1367: 2015-03-05 17:31:17 ЛС | профиль | цитата
Netspirit, Так точно капитан! Запомню. Спасибо. Буду дальше маны по дельфи курить, постараюсь сделать алтернативную версию hiSQL_DB, с точкой для PRAGMA key и выбором режима работы...чтение, запись.
карма: 0

0
Ответов: 16504
Рейтинг: 1212
#1368: 2015-03-05 18:16:27 ЛС | профиль | цитата
там ещё просят INTEGER 32770
sqlite3_open_v2(PChar(CodePage1ToCodePage2(ReadString(_Data,_data_FileName, _prop_FileName), CP_ACP, CP_UTF8)), id,32770,nil);
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3967
Рейтинг: 625
#1369: 2015-03-05 18:25:03 ЛС | профиль | цитата
И что бы это значило, если не $8000 or $2?
карма: 19

0
Ответов: 16504
Рейтинг: 1212
#1370: 2015-03-05 18:56:13 ЛС | профиль | цитата
Netspirit, то и значит.
В DELPHI, где определены константы:
const // DELPHI
  SQLITE_OPEN_READONLY       =      1; 
SQLITE_OPEN_READWRITE = 2;
SQLITE_OPEN_CREATE = 4;
SQLITE_OPEN_DELETEONCLOSE = 8;
SQLITE_OPEN_EXCLUSIVE = 16;
SQLITE_OPEN_AUTOPROXY = 32;
SQLITE_OPEN_URI = 64;
SQLITE_OPEN_MEMORY = 128;
SQLITE_OPEN_MAIN_DB = 256;
SQLITE_OPEN_TEMP_DB = 512;
SQLITE_OPEN_TRANSIENT_DB = 1024;
SQLITE_OPEN_MAIN_JOURNAL = 2048;
SQLITE_OPEN_TEMP_JOURNAL = 4096;
SQLITE_OPEN_SUBJOURNAL = 8192;
SQLITE_OPEN_MASTER_JOURNAL = 16384;
SQLITE_OPEN_NOMUTEX = 32768;
SQLITE_OPEN_FULLMUTEX = 65536;
SQLITE_OPEN_SHAREDCACHE = 131072;
SQLITE_OPEN_PRIVATECACHE = 262144;
SQLITE_OPEN_WAL = 524288;
пишут просто
sqlite3_open_v2(PChar(CodePage1ToCodePage2(ReadString(_Data,_data_FileName, _prop_FileName), CP_ACP, CP_UTF8)), id,SQLITE_OPEN_READWRITE+SQLITE_OPEN_NOMUTEX,nil);
не забивая себе голову ни орами ни андами ни гексами ни цифрами.
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 648
Рейтинг: 18
#1371: 2015-03-06 01:09:03 ЛС | профиль | цитата
Да, я их тоже уже объявил из Sqlite3.pas которым вы поделились)
карма: 0

0
Ответов: 648
Рейтинг: 18
#1372: 2015-03-16 03:35:23 ЛС | профиль | цитата
Подскажите пожалуйста как реализовать следующее:

Есть база с blob (фотографиивидео)

как считать blob данные по байтам? загружать в MemoryStream весь файл и потому уже считывать по байтам не вариант, если файл большой то может и оперативки не хватить..

пока пробую вариант SELECT substr (hex(data), %1,%2) from data where id=1;
где %1 - с какого символа, а %2 по какой символ сделать выборку.. (SELECT substr (hex(data), 1, 5000) from data where id=1; -выдаю порциями по 5mb)

способ работает но медленно (даже на SSD диске)...может есть способы быстрее? гугл мучал мучал...ни чего не нашел..





карма: 0

0
Ответов: 16504
Рейтинг: 1212
#1373: 2015-03-16 09:19:00 ЛС | профиль | цитата
.....
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 648
Рейтинг: 18
#1374: 2015-03-16 18:09:35 ЛС | профиль | цитата
Tad, а чего это вы посмеялись над SELECT substr (hex(data), 1, 5000) from data where id=1; -выдаю порциями по 5mb...

ошибся в нулях, это я для примера вобще привел.

Файл в БД blob, select lenght(data) from data where id=1;

результат 12582912 что собственно и является размером файла в байтах.

SELECT substr (hex(data), 1, 5242880) from data where id=1 - считываем с первого по 5242880 символ (байт) (выборка 5mb)

SELECT substr (hex(data), 5242880, 10485760) from data where id=1 - 5242880 по 10485760 символ(байт) (выборка 5mb)
SELECT substr (hex(data), 10485760, 12582912) from data where id=1 с 10485760 по 12582912 символ(байт) (выборка 2mb)

Может не ту функцию использую поэтому медленно? (ну что такое для SSD 5mb считать..пустяк)
как быстрее сделать можно?



карма: 0

0
Ответов: 16504
Рейтинг: 1212
#1375: 2015-03-16 19:03:56 ЛС | профиль | цитата
Gunnman писал(а):
а чего это вы посмеялись над SELECT substr (hex(data), 1, 5000) from data where id=1;
Потому что
SELECT hex(data) from data where id=1;
отработает намного быстрее.
Ну и над 5mb тоже.
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 648
Рейтинг: 18
#1376: 2015-03-17 02:09:44 ЛС | профиль | цитата
Tad, Так понятно что просто select hex(data) будет быстрее, но мне то нужно определенное кол-во байтсимволов из blob только считать.

Такое возможно?
------------ Дoбавленo в 02.09:
Так выборка 5 000 000 байт занимала в районе ~900-970мс.

Пересобрал библиотеку ~ 120мс)))

правильный вариант (судя по рекомендация на stackoverflow) select hex(substr(video, %1, %2)) from video where id=1;
карма: 0

0
Ответов: 383
Рейтинг: 57
#1377: 2015-03-23 22:22:59 ЛС | профиль | цитата
Добрый день!
Подскажите как правильно вывести из базы с разных таблиц значения при условии, что в одной из таблиц запиcь может быть, а может и не быть?
Есть 3 таблиц в одной базе:
table_1
nom1 | form1 | color1
nom2 | form2 | color2
nom3 | form3 | color3

table_2
nom1 | tip1 | ves1
nom2 | tip2 | ves2
nom3 | tip3 | ves3

table_3
nom1 | time1 | data1
nom2 | time2 | data2

Я пытаюсь так (пример условный):
SELECT table_1.nom, table_.tip, table_.data
FROM table_1, table_2, table_3
WHERE table_2.nom=table_1.nom and table_3.nom=table_1.nom;

Т.е. получится так:
nom1 | tip1 | data1
nom2 | tip2 | data2

А нужно так:
nom1 | tip1 | data1
nom2 | tip2 | data2
nom3 | tip3 |
карма: 0

0
Ответов: 3967
Рейтинг: 625
#1378: 2015-03-24 12:06:03 ЛС | профиль | цитата
SELECT t1.nom, t2.tip, t3.data
FROM table_1 t1
LEFT JOIN table_2 AS t2 ON t2.nom = t1.nom
LEFT JOIN table_3 AS t3 ON t3.nom = t1.nom

При отсутствии записи в таблицах t2, t3 соответствующие поля будут null
карма: 19

2
Голосовали:Poputchik, Tad
Ответов: 383
Рейтинг: 57
#1379: 2015-03-24 21:17:18 ЛС | профиль | цитата
Почему не нужно указывать LEFT outer JOIN, в чем разница?
карма: 0

0
Ответов: 16504
Рейтинг: 1212
#1380: 2015-03-25 08:52:51 ЛС | профиль | цитата
https://ru.wikipedia.org/wiki/Join_(SQL)
карма: 23
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Poputchik
Сообщение
...
Прикрепленные файлы
(файлы не залиты)