从文本插入图像

时间:2014-02-03 17:01:52

标签: sql sql-server vb.net tsql

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

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

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

2 个答案:

答案 0 :(得分:0)

所以你需要将图像保存为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 ();

答案 1 :(得分:0)

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

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