On 11/27/06, LuYanJun <[EMAIL PROTECTED]> wrote:
Can anybody give a simple example for domestrating ?
I am puzzled by this topic, how does a music file be sotred in DB as BLOB
type?
You can insert /any/ kind of data into a SQLite database (or most any other
sort of DB for that matter). Here's a short Pascal program that would do
about what you want -- but of course getting the binary data out and into an
object that can play it is another matter. Also I imagine this would be very
slow, coming in at around 3 - 5 MB per song that has to be completely loaded
into memory from the DB before playback and begin. I have not tested this
but it gives you the idea: 1) load data into a stream / data string 2) write
as DB BLOB.
var
MP3Source: string;
Data: TFileStream
DBFileName: string;
DB: TSQLiteDatabase;
MustCreate: boolean;
begin
MP3Source := 'SomeSong.mp3';
DBFileName := 'mp3.db3';
MustCreate := not FileExists(DBFileName);
DB := TSQLiteDatabase.Create(DBFileName);
try
if MustCreate then begin
DB.ExecSQL('CREATE TABLE mp3(filename STRING PRIMARY KEY, data
BLOB);');
end;
Data := TFileStream.Create(MP3Source, fmOpenRead);
try
Data.Seek(0);
DB.UpdateBlob('INSERT OR UPDATE INTO mp3(filename, data) ' +
'VALUES(' + QuotedStr(MP3Source) + ', ?);', Data);
finally
FreeAndNil(Data);
end;
finally
DB.Close;
FreeAndNil(DB);
end;
end;