5
SQLiteについての情報を含む数十のWebサイトを訪問した後も、Blobをバインドする際にエラーを修正する解決策が見つかりません。ここでは、テーブルdeclerationです:SQLite Blobの挿入C++
CREATE TABLE ONE (
ID INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL,
NAME CHAR(50) NOT NULL,
LABEL CHAR(50),
GRP CHAR(50),
FILE BLOB
);
そして、ここに挿入するためのコードです:
int InsertFile(string name)
{
const char* dbname = name.c_str();
sqlite3 *database;
int rc = sqlite3_open(dbname, &database);
char *zErrMsg = 0;
unsigned char *buffer = (unsigned char*) malloc(sizeof(char)*MAX);
ifstream file;
file.open("Sql.pdf", ios::in|ios::binary);
if (! file)
{
cout << "An error occurred opening the file" << endl;
}
int count = 0;
const void* fileptr = NULL;
fileptr = buffer;
while(file.good())
{
char c=file.get();
buffer[count]=c;
count++;
}
file.close();
sqlite3_stmt *stmt = NULL;
char* statement = "INSERT INTO ONE( ID, NAME, LABEL, GRP, FILE) VALUES ( NULL, 'fedfsdfss', NULL, NULL, ?);";
rc = sqlite3_prepare_v2(database, statement, 0, &stmt, NULL);
rc = sqlite3_bind_blob(stmt, 1, fileptr, sizeof(char)*count, SQLITE_TRANSIENT);
const char* result = sqlite3_errmsg(database);
rc = sqlite3_step(stmt);
result = sqlite3_errmsg(database);
sqlite3_close(database);
free(buffer);
fileptr=NULL;
return 0;
} EDIT:貼り付けのフル機能、文字の量を挿入しようとイムは約350Kです。
binb_blobの結果は常に21です。エラーコードには何も含まれていません。バッファにはバイナリファイルのデータが含まれていますが、それはおそらくそれほど大きくないので、エラーコードです。どんなヒントもアピールされます。
' fileptr =&バッファ:
はこのような何かを試してみてください。 –
'count'が偽である可能性もあります - それがどのように設定されているかわかりません。 –
countはバッファ内の文字の量で、fileptrには何が問題なのですか?バッファ自体を置くことで何も変わらない – Ghostli