Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为“生成插入”;“图像”;键入MSSQL(Java)_Java_Sql Server_Mssql Jdbc - Fatal编程技术网

为“生成插入”;“图像”;键入MSSQL(Java)

为“生成插入”;“图像”;键入MSSQL(Java),java,sql-server,mssql-jdbc,Java,Sql Server,Mssql Jdbc,我有一个数据库,其中表的一列是“image”类型。我把编码的pdf文件放在那里 我的目标是在Java应用程序控制台中打印,插入包含表中所有数据的语句(以便执行与ManagementStudio中的“GenerateScript…”相同的操作)。然而,由于我的“image”列是二进制的,我不知道如何将它编码为INSERT statement,这样这个statement就可以执行了 您可以使用SQL函数将二进制(varbinary)转换为字符串(varchar),以便将二进制数据转换为字符串(以十六

我有一个数据库,其中表的一列是“image”类型。我把编码的pdf文件放在那里

我的目标是在Java应用程序控制台中打印,插入包含表中所有数据的语句(以便执行与ManagementStudio中的“GenerateScript…”相同的操作)。然而,由于我的“image”列是二进制的,我不知道如何将它编码为INSERT statement,这样这个statement就可以执行了

您可以使用SQL函数将二进制(varbinary)转换为字符串(varchar),以便将二进制数据转换为字符串(以十六进制表示)

convert函数有一个参数样式,用于指示字符串是否以0x字符开头。我在这些示例中使用值2(没有0x字符)

从二进制到字符串:

select convert(varchar(max), my_image, 2) as my_string_representation
from my_table
从字符串返回到二进制:

select convert(varbinary(max), my_string_representation, 2) as my_binary_image
from my_table
因此,为了构建纯文本insert语句,让我们假设convert(varchar(max),my_image,2)在某个记录上返回了“49747A696B…”字符串,那么该记录的insert语句将是:

insert into my_table (my_id, my_image)
            values (25, convert(varbinary(max), '49747A696B...', 2))

不要使用图像数据类型。它已经被弃用了将近15年了。你应该改用varbinary(max)。对于手头的问题……你想要什么还不清楚。我无法确定为什么有人认为这个问题值得投票。这是真的——不是:)。很抱歉,谢谢你指出我需要重新定义我的问题。希望现在它更容易理解。谢谢你的回答。但是,当我尝试使用这个时,我遇到了一个问题:不允许从数据类型image显式转换为varchar(max)。是的,正如一些评论中所说,image数据类型已过时,您应该将字段从image更改为varbinary(max)。