SQLITE3 读写二进制字段blob

SQLITE3 读写二进制字段blob,第1张

概述看了下SQLITE3的 *** 作类,对于blob的字段存/取 *** 作已经会用了。 但是只能一次性的读取文件长度,然后分配内存。对于分批次写入,我现在还没有弄明白,需要进一步的学习。 写在这里记录一下吧。 CppSQLite3DB db; LPCSTR pstrFileName ="d:\\test.s3db"; try { db.open(pstrFileName);

看了下sqlite3的 *** 作类,对于blob的字段存/取 *** 作已经会用了。

但是只能一次性的读取文件长度,然后分配内存。对于分批次写入,我现在还没有弄明白,需要进一步的学习。


写在这里记录一下吧。

        Cppsqlite3DB db;	LPCSTR pstrfilename ="d:\test.s3db";	try	{ 		db.open(pstrfilename); 		unsigned char* bin ; 		Cppsqlite3Binary  blob; 		HANDLE hfile = Createfile("c:\test.bmp",GENERIC_READ,file_SHARE_READ,OPEN_EXISTING,file_ATTRIBUTE_norMAL,0);		DWORD DWfileSize=0;		DWfileSize =GetfileSize(hfile,&DWfileSize);		bin = new unsigned char[DWfileSize];//一次性分配内存 ,好郁闷啊。		//写入数据库			DWORD DWRead = 0 ;		DWORD DWSize = DWfileSize;		Readfile(hfile,bin,DWSize,&DWRead,0);		blob.setBinary(bin,DWSize);		Cppsqlite3Buffer bufsql;		bufsql.format("insert into bindata values ('testing',%Q);",blob.getEncoded());		db.execDML(bufsql);	 		CloseHandle(hfile);		delete bin; 		//读取blob字段,并创建生成新的文件			hfile = Createfile("c:\TEST2.bmp",GENERIC_WRITE,OPEN_ALWAYS,0);		Cppsqlite3query q ;		q = db.execquery("select data from bindata where desc = 'testing';");				//读到内存中			if (!q.eof())		{			blob.setEncoded((unsigned char*)q.fIEldValue("data")); 		}		const unsigned char* pbin = blob.getBinary();		DWORD DWWrite;		Writefile(hfile,pbin,blob.getBinaryLength(),&DWWrite,0);//写入文件 		CloseHandle(hfile);	}	catch(Cppsqlite3Exception &e)	{		m_List.AddString(e.errorMessage());	}
sqlite3的C语言API没有完全理解,现在只能这么办了,也是没办法。 总结

以上是内存溢出为你收集整理的SQLITE3 读写二进制字段blob全部内容,希望文章能够帮你解决SQLITE3 读写二进制字段blob所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1176385.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-02
下一篇2022-06-02

发表评论

登录后才能评论

评论列表(0条)

    保存