⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tamsyn.cpp

📁 SQLite中如何用API操作BLOB类型的字段
💻 CPP
字号:
// tamsyn.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "CodingConv.h"
#include "sqlite3.h"

int _tmain(int argc, _TCHAR* argv[])
{
	sqlite3 *db;
	sqlite3_stmt *stat;
	char *zErrMsg = 0;
	char temp[256], FileRoot[256];
	char buffer2[1024]="0";

	sprintf(temp, _T("%s"), _T("test.db"));
	CCodingConv::GB2312_2_UTF8(FileRoot, 256, temp, 0);
	sqlite3_open(FileRoot, &db);

	if(db == NULL)
	{
		return -1;
	}

	sqlite3_exec(db, "CREATE TABLE list (fliename varchar(128) UNIQUE, fzip blob);", 0, 0, &zErrMsg);
	sqlite3_prepare(db, "insert into list values ('mmmm.rar',?);", -1, &stat, 0);
	
	FILE *fp;
	long filesize = 0;
	char * ffile;

	fp = fopen("mmmm.rar", "rb");

	if(fp != NULL)
	{
		fseek(fp, 0, SEEK_END);
		filesize = ftell(fp);
		fseek(fp, 0, SEEK_SET);

		ffile = new char[filesize+1];
		size_t sz = fread(ffile, sizeof(char), filesize+1, fp);
			
		fclose(fp);
	}

	sqlite3_bind_blob(stat, 1, ffile, filesize, NULL);
	sqlite3_step(stat);

	sqlite3_prepare(db, "select * from list;", -1, &stat, 0);
	sqlite3_step(stat);

	const void * test = sqlite3_column_blob(stat, 1);
	int size = sqlite3_column_bytes(stat, 1);

	sprintf(buffer2, "%s", test);

	FILE	*fp2;

	fp2 = fopen("outfile.rar", "wb");

	if(fp2 != NULL)
	{
		size_t ret = fwrite(test, sizeof(char), size, fp2);
		fclose(fp2);
	}

	delete(ffile);
	sqlite3_finalize(stat);
	sqlite3_close(db);

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -