sqlite 3データベースアクセスと画像の取り出し


最近、sqlite 3データベースの使用を学び、画像情報をバイナリ形式に変換して読み出す練習があります.コードを投稿します.
勉强しろ!
-------------------------------------------------------------------------------------------------------------------
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc,char *argv[])
{
	if(argc != 2)
	{
		printf("Usage :%s 
",argv[0]); return 1; } // , int fd = open(argv[1],O_RDONLY); if(fd <0) { perror("open error:"); return 2; } // struct stat st; fstat(fd,&st); int imgSize = st.st_size; void *addr = malloc(imgSize); if(!addr) { perror("malloc error:"); return 2; } read(fd,addr,imgSize);// fd addr , imgSize close(fd);// // sqlite3 *db; int ret = sqlite3_open("img.db",&db);// , , if(ret != SQLITE_OK) { fprintf(stderr,"open db error:%s
",sqlite3_errmsg(db)); sqlite3_close(db);// return 2; } // char *insertsql = "insert into img_tb values(?,?);"; sqlite3_stmt *stmt; ret = sqlite3_prepare_v2(db,insertsql,strlen(insertsql),&stmt,NULL); if(ret != SQLITE_OK) { fprintf(stderr,"prepare db error:%s
",sqlite3_errmsg(db)); sqlite3_close(db); } sqlite3_bind_text(stmt,1,argv[1],strlen(argv[1]),NULL);// sqlite3_bind_blob(stmt,2,addr,imgSize,NULL);// // sqlite3_step(stmt); // sqlite3_finalize(stmt); sqlite3_close(db); free(addr); return 0; }

---------------------------------------------------------------------------------------------------------------------------
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc,char *argv[])
{
	sqlite3 *db;
	//     
	int ret = sqlite3_open("img.db",&db);
	if(ret != SQLITE_OK)
	{
		fprintf(stderr,"open db error:%s
",sqlite3_errmsg(db)); sqlite3_close(db); return 2; } // char *selectsql = "select imgName,imgData from img_tb;"; sqlite3_stmt *stmt; ret = sqlite3_prepare_v2(db,selectsql,-1,&stmt,NULL); if(ret != SQLITE_OK) { fprintf(stderr,"prepare db error:%s
",sqlite3_errmsg(db)); sqlite3_close(db); return 2; } ret= sqlite3_step(stmt);// const char *imgName; const void *addr; int imgSize; while(ret == SQLITE_ROW)// { imgName = sqlite3_column_text(stmt,0); addr = sqlite3_column_blob(stmt,1); imgSize = sqlite3_column_bytes(stmt,1); printf("imgName = %s,imgSize = %d
",imgName,imgSize); int fd = open(imgName,O_WRONLY | O_CREAT ,0666); if(fd < 0) { perror("open error:"); return 0; } write(fd,addr,imgSize); close(fd); ret= sqlite3_step(stmt);// } sqlite3_finalize(stmt); sqlite3_close(db); return 0; }