【问题标题】:Insert image from text从文本中插入图像
【发布时间】:2014-02-03 17:01:51
【问题描述】:

我有一个程序可以自定义导出表,它会创建一个 T-SQL INSERT 命令,其中的值直接硬编码到 INSERT 值中。然后我有一个简单地执行该 INSERT 命令的导入。这很好用,但现在我向表 (varbinary) 添加了一个 Image 列,该列也需要作为列之一。

我正在寻找一种将图像转换为文本的方法,该方法也需要有效才能在 INSERT 命令中工作。我要么需要 VB.NET 代码来完成这个,要么需要 T-SQL;两者都可以。

总之,我正在寻找一种方法将存储在数据库中的图像导出为文本,然后使用该文本作为要插入回数据库的值。

【问题讨论】:

  • 你说convert the images to text是什么意思?
  • Varbinary 可以用二进制文字/常量表示:0xDEADBEEF
  • 我的意思是我需要将图像转换为 nvarchar 也就是文字/常量表示。

标签: sql sql-server vb.net tsql


【解决方案1】:

所以你需要将图片保存为base64格式,下面是示例

商店示例

string bs64OfBytes = Convert.ToBase64String(byteConvertedImage);

byteConvertedImage 是图片的字节数组。

检索示例

byteConvertedImage = Convert.FromBase64String(Base64stringFromDatabase);

byteConvertedImage 是图片的字节数组。

另一种将图像转换为字节并存储到图像字段的方法是示例代码。

        Image img = Image.FromFile (path);
        MemoryStream tmpStream = new MemoryStream();
        img.Save (tmpStream, ImageFormat.Png); // change to other format
        tmpStream.Seek (0, SeekOrigin.Begin);
        byte[] imgBytes = new byte[MAX_IMG_SIZE];
        tmpStream.Read (imgBytes, 0, MAX_IMG_SIZE);

        command.CommandText = "INSERT INTO table1(field1) VALUES (value1)";
        IDataParameter par = command.CreateParameter();
        par.ParameterName = "value1";
        par.DbType = DbType.Binary;
        par.Value = imgBytes;
        command.Parameters.Add(par);
        command.ExecuteNonQuery ();

【讨论】:

    【解决方案2】:

    我最终使用T-SQL 来执行此操作。语法如下:

    '0x' + CONVERT(varchar(max), MyImage, 2)
    

    【讨论】:

    • 或 : CONVERT(varchar(max), MyImage, 1) ,它将为您添加 '0x'。
    猜你喜欢
    • 2019-02-03
    • 2012-09-20
    • 2016-09-29
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    相关资源
    最近更新 更多