C#SQLite检索完整blob并插入完整blob

C#SQLite检索完整blob并插入完整blob,c#,sqlite,blob,C#,Sqlite,Blob,大家好!目前我正在从事一个c#项目,该项目需要我从.db3 sqlite文件中检索图像并将其插入另一个.db3文件中。我可以成功检索blob数据并将其保存为本地驱动器中的映像。我的blob中有三种类型的值:十六进制、文本和图像。然而,当我试图检索完整的十六进制值或图像时,我只能检索其中的文本值,因为文本是行中显示的文本。我曾尝试在多个平台和谷歌上搜索,但这些解决方案仍然给了我同样的结果。在这种情况下,我无法查看新数据库文件中的图像。我的代码如下: rdrall.Read(); string ra

大家好!目前我正在从事一个c#项目,该项目需要我从.db3 sqlite文件中检索图像并将其插入另一个.db3文件中。我可以成功检索blob数据并将其保存为本地驱动器中的映像。我的blob中有三种类型的值:十六进制、文本和图像。然而,当我试图检索完整的十六进制值或图像时,我只能检索其中的文本值,因为文本是行中显示的文本。我曾尝试在多个平台和谷歌上搜索,但这些解决方案仍然给了我同样的结果。在这种情况下,我无法查看新数据库文件中的图像。我的代码如下:

rdrall.Read();
string rawimage = ($"{rdrall[5]}") ;
byte[] newByte = ToByteArray(rawimage);

string inserttbl1 = "INSERT INTO newtest3 (image) VALUES (" + "'" + newbyte + "'" + ")";

SQLiteCommand insert = new SQLiteCommand(inserttbl1, createnew);
insert.ExecuteNonQuery();
结果应该是这样的“?”

但结果是这样的“system.byte[]”:


并且实际输出不能作为图像查看。是否允许我检索整个值,或者只是将图像转换为格式?提前谢谢

您正在数据库中插入一个
System.byte[]
文本值,因为C#中的字符串串联将调用对象的
.ToString()
方法,
byte[]
将使用一种通用方式在字符串中表示对象(类型名称),而不是表示数组内容本身

如果要在blob列中插入字节[],建议您将其用作:

SqliteCommand=newsqlitecommand(“插入newtest3(id,name,image)值(@id,@name,@image)”,连接);
command.Parameters.Add(“@id”,SqliteType.Integer).Value=10;
command.Parameters.Add(“@name”,SqliteType.Text).Value=“john”;
添加(新的SqliteParameter()
{
ParameterName=“@image”,
值=数据,
DbType=System.Data.DbType.Binary
});
command.ExecuteNonQuery();
要将blob内容读取为byte[],只需将列强制转换为byte[]:

SqliteCommand query = new SqliteCommand("select image from newtest3", connection);
SqliteDataReader reader = query.ExecuteReader();
while (reader.Read())
{
    byte[] image = (byte[])reader["image"];
}

非常感谢。我对参数有一些疑问,如果表中有多个字段,我可以知道如何添加更多参数吗?我尝试这样添加,但错误仍然是相同的commandimg.Parameters.add(new SQLiteParameter(){ParameterName=“lotGUID”,//或@image Value=lotGUID,DbType=System.Data.DbType.String});我只是编辑以添加更多列。您遇到了什么错误?很抱歉,回复太晚,这两天我一直在努力寻找替代方案。我知道了,我试过你给我的代码,然后我意识到我使用的是System.data.sqlite而不是Microsoft.data.sqlite。当前,我收到错误消息:“您需要调用SQLitePCL.raw.SetProvider()。如果您使用的是捆绑包,则在创建连接时调用SQLitePCL.batters.Init()”即可。为所有的麻烦感到抱歉,我刚开始c#1个月,仍在继续工作it@ChanJunLiang没问题,我也面临着这个问题,因为包的名字,我们在这里学习和分享知识,谢谢你这么多狮子座,你救了我的命!