本文目錄一覽:
- 1、sqlite3 blob數據讀取錯誤
- 2、請教SQLite數據庫讀寫BLOB字段
- 3、使用jdbc連接sqlite3時,blob數據該怎麼存入取出
- 4、sqlite blob字段怎麼寫update
sqlite3 blob數據讀取錯誤
sqlite3_bind_blob的第二個參數是從1開始的,所以content的索引為2,應該改為如下:
sqlite3_bind_blob(stmt1,2,buf,100,SQLITE_STATIC);
取數據也要改:
sendbuf= (char *)sqlite3_column_blob(stmt,1);
請教SQLite數據庫讀寫BLOB字段
SQLite中如何用api操作blob類型的字段
在實際的編程開發當中我們經常要處理一些大容量二進制數據的存儲,如圖片或者音樂等等。對於這些二進制數據(blob字段)我們不能像處理普通的文本那樣 簡單的插入或者查詢,為此SQLite提供了一組函數來處理這種BLOB字段類型。下面的代碼演示了如何使用這些API函數。
首先我們要建立一個數據庫:
sqlite3_exec(db, “CREATE TABLE list (fliename varchar(128) UNIQUE, fzip blob);”, 0, 0, zErrMsg);
//由於mmmm.rar是一個二進制文件,所以要在使用insert語句時先用?號代替
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);
}
//將文件數據綁定到insert語句中,替換「?」部分
sqlite3_bind_blob(stat, 1, ffile, filesize, NULL);
使用jdbc連接sqlite3時,blob數據該怎麼存入取出
直接插入NSData類型char *buffer=new char[1024*1024]; //要放入的內容sqlite3_prepare( db, “insert into tb( ID, content) values( 10, ? )”, -1, stat, 0 );//準備插入數據sqlite3_bind_blob( stat, 1, buffer, strlen(buffer), NULL ); //把內容和字段綁定CLOB和BLOB類型被用來存放大對象。BOLB表示二進制大對象,這種數據類型通過用來保存圖片,圖象,視頻等。CLOB表示字符大對象,能夠存放大量基於字符的數據。
sqlite blob字段怎麼寫update
// 連接字符串 data source=d:\test.db3;password=1234
SQLiteConnectionStringBuilder connStr = new SQLiteConnectionStringBuilder();
connStr.DataSource = @”d:\test.db3″;
connStr.Password = “1234”;
conn = new SQLiteConnection(connStr.ToString());
conn.Open();
// 插入數據
string SQL = “INSERT INTO test(k) VALUES(:k)”;
SQLiteCommand cmd = conn.CreateCommand();
cmd.CommandText = SQL;
// 取圖標,準備插入到數據庫BLOB字段
FileStream picStream = File.OpenRead(@”d:\1.bmp”);
byte[] bArray = new byte[picStream.Length];
picStream.Read(bArray, 0, bArray.Length);
picStream.Close();
cmd.Parameters.Add(“k”, DbType.Binary).Value = bArray; // BLOB
cmd.ExecuteNonQuery();
//取出數據
cmd.CommandText = “SELECT k FROM test”;
System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MemoryStream streamImage = new MemoryStream(reader[“k”] as byte[]);
pictureBox1.Image = Image.FromStream(streamImage);
streamImage.Close(); // 關閉流
}
reader.close();
conn.close();
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/159403.html