C ++将sqlite blob从一个数据库复制到另一个数据库

库沙尔杜萨(Kushaldsouza)

我试图在C ++中将一些Blob数据从一个sqlite表复制到另一个。但是,将数据复制到新表后,它似乎已损坏。所述数据包含一些jpeg图像。我用来从TABLE1复制到TABLE2的代码如下所示:

// Read the blob from the database
    int64_t rowID = 0;
    sscanf( id.c_str(), "%llu", &rowID );

    sqlite3_blob* blobHandle = NULL;
    if( sqlite3_blob_open( m_dbHandle_temp, "main", m_currentTileTable.c_str(), "tile_data", rowID, 0, &blobHandle ) != SQLITE_OK )
    {
        sqlite3_blob_close( blobHandle ); // An SQLite blob will be initialised regardless of the success of 'sqlite3_blob_open'
        return false;
    }


    tiles_insert_statement.append( ")" );

    // Copy blob to database
    sqlite3_stmt *stmt = 0;
    const char* tail;
    sqlite3_prepare_v2( m_dbHandle, tiles_insert_statement.c_str(), strlen( tiles_insert_statement.c_str() )+1, &stmt, &tail );
    int bindSuccess = sqlite3_bind_blob( stmt, 1, blobHandle, sqlite3_blob_bytes( blobHandle ), SQLITE_TRANSIENT );
    if( sqlite3_step( stmt ) != SQLITE_DONE ) 
        printf( "Error message: %s\n", sqlite3_errmsg( m_dbHandle ) );
    sqlite3_finalize( stmt );

    // close handles
    sqlite3_blob_close( blobHandle );

我在上面的代码中做错什么了,我之所以说它已损坏,是因为我正在读取要在图像查看器中显示的android设备上的斑点。可以很好地读取和显示表1中的blob,但是表2中的blob不显示任何内容。任何帮助都将不胜感激。

解决方案:

// Read the blob from the database
    int64_t rowID = 0;
    sscanf( id.c_str(), "%llu", &rowID );

    sqlite3_blob* blobHandle = NULL;
    if( sqlite3_blob_open( m_dbHandle_temp, "main", m_currentTileTable.c_str(), "tile_data", rowID, 0, &blobHandle ) != SQLITE_OK )
    {
        sqlite3_blob_close( blobHandle ); // An SQLite blob will be initialised regardless of the success of 'sqlite3_blob_open'
        return false;
    }

    unsigned int length = sqlite3_blob_bytes( blobHandle );

    // TODO - instances of this class OWN the buffer.
    // Delete the buffer in the destructor ;)
    unsigned char* buffer = new unsigned char[ length ];
    if( sqlite3_blob_read( blobHandle, buffer, length, 0 ) != SQLITE_OK )
    {
        return false;
    }

    tiles_insert_statement.append( ")" );

    sqlite3_stmt *stmt = 0;
    const char* tail;
    sqlite3_prepare_v2( m_dbHandle, tiles_insert_statement.c_str(), strlen( tiles_insert_statement.c_str() )+1, &stmt, &tail );
    int bindSuccess = sqlite3_bind_blob( stmt, 1, buffer, length, SQLITE_TRANSIENT );
    if( sqlite3_step( stmt ) != SQLITE_DONE ) 
        printf( "Error message: %s\n", sqlite3_errmsg( m_dbHandle ) );
    sqlite3_finalize( stmt );

    // close handles
    sqlite3_blob_close( blobHandle );
CL。

sqlite3_bind_blob需要一个指向实际Blob数据的指针;不能为此使用Blob句柄。

要将blob数据作为内存块获取,请执行类似的查询,SELECT tile_data FROM MyTable WHERE ...并使用sqlite3_column_blob读取值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅将新条目从一个数据库表复制到另一数据库表。Access,C#

来自分类Dev

实体框架C#-将数据从一个数据库移动到结构相似的另一个数据库

来自分类Dev

SQLite 使用 shell 脚本将数据从一个数据库复制到另一个数据库

来自分类Dev

Laravel 4.2:将数据库记录从一个数据库复制到另一个数据库

来自分类Dev

使用C#将表从一个MS Access数据库传输到另一个数据库

来自分类Dev

MySQL将数据从一个数据库复制到另一个数据库

来自分类Dev

将表数据从一个数据库复制到另一个数据库

来自分类Dev

访问将数据从一个数据库复制到另一个数据库

来自分类Dev

AWS Postgres每天将数据从一个数据库复制到另一个数据库吗?

来自分类Dev

将表数据从一个数据库复制到具有条件的另一个数据库

来自分类Dev

将表数据从一个数据库复制到另一个数据库

来自分类Dev

将数据从一个数据库复制到另一个数据库 - 包括引用的表和身份

来自分类Dev

将记录从一个数据库复制到另一个数据库(Teradata到SQL Server)

来自分类Dev

如何将所有配置单元表从一个数据库复制到另一个数据库

来自分类Dev

将租户从一个数据库复制到另一个数据库

来自分类Dev

没有将存储过程从一个数据库复制到另一个数据库的答案

来自分类Dev

Sitecore Powershell控制台-将媒体项目从一个数据库复制到另一个数据库

来自分类Dev

将表从一个数据库复制到另一个数据库

来自分类Dev

将所有密钥从一个数据库复制到Redis中的另一个数据库

来自分类Dev

使用MySQL CLI将值从一个数据库复制到另一个数据库

来自分类Dev

将租户从一个数据库复制到另一个数据库

来自分类Dev

使用 Alteryx 将表从一个数据库复制到另一个数据库

来自分类Dev

将存储过程从一个数据库复制到另一个数据库

来自分类Dev

如何通过IP将数据从一个数据库/表复制到另一个远程数据库

来自分类Dev

如何将数据从一个数据库复制到另一个Oracle数据库?

来自分类Dev

将数据从一个表复制到另一个数据库中的另一个表

来自分类Dev

使用C#将访问数据库中的表复制到另一个表中

来自分类Dev

将PostgreSQL数据库复制到另一个数据库

来自分类Dev

如何将所有数据库用户从一个数据库复制到另一个数据库

Related 相关文章

  1. 1

    仅将新条目从一个数据库表复制到另一数据库表。Access,C#

  2. 2

    实体框架C#-将数据从一个数据库移动到结构相似的另一个数据库

  3. 3

    SQLite 使用 shell 脚本将数据从一个数据库复制到另一个数据库

  4. 4

    Laravel 4.2:将数据库记录从一个数据库复制到另一个数据库

  5. 5

    使用C#将表从一个MS Access数据库传输到另一个数据库

  6. 6

    MySQL将数据从一个数据库复制到另一个数据库

  7. 7

    将表数据从一个数据库复制到另一个数据库

  8. 8

    访问将数据从一个数据库复制到另一个数据库

  9. 9

    AWS Postgres每天将数据从一个数据库复制到另一个数据库吗?

  10. 10

    将表数据从一个数据库复制到具有条件的另一个数据库

  11. 11

    将表数据从一个数据库复制到另一个数据库

  12. 12

    将数据从一个数据库复制到另一个数据库 - 包括引用的表和身份

  13. 13

    将记录从一个数据库复制到另一个数据库(Teradata到SQL Server)

  14. 14

    如何将所有配置单元表从一个数据库复制到另一个数据库

  15. 15

    将租户从一个数据库复制到另一个数据库

  16. 16

    没有将存储过程从一个数据库复制到另一个数据库的答案

  17. 17

    Sitecore Powershell控制台-将媒体项目从一个数据库复制到另一个数据库

  18. 18

    将表从一个数据库复制到另一个数据库

  19. 19

    将所有密钥从一个数据库复制到Redis中的另一个数据库

  20. 20

    使用MySQL CLI将值从一个数据库复制到另一个数据库

  21. 21

    将租户从一个数据库复制到另一个数据库

  22. 22

    使用 Alteryx 将表从一个数据库复制到另一个数据库

  23. 23

    将存储过程从一个数据库复制到另一个数据库

  24. 24

    如何通过IP将数据从一个数据库/表复制到另一个远程数据库

  25. 25

    如何将数据从一个数据库复制到另一个Oracle数据库?

  26. 26

    将数据从一个表复制到另一个数据库中的另一个表

  27. 27

    使用C#将访问数据库中的表复制到另一个表中

  28. 28

    将PostgreSQL数据库复制到另一个数据库

  29. 29

    如何将所有数据库用户从一个数据库复制到另一个数据库

热门标签

归档