当前位置: 首页 > 面试题库 >

无法将bytes []转换为VARBINARY

曹建明
2023-03-14
问题内容

我正在尝试将文件保存到SQL Server数据库中,该文件将保存在其中的列是datatype VARBINARY

我目前这样做的方式是通过获取文件路径并将文件转换为字节数组。

string SelectedFilePath = "" ;
OpenFileDialog choofdlog = new OpenFileDialog();

if (choofdlog.ShowDialog() == DialogResult.OK)
{
    SelectedFilePath = choofdlog.FileName;      
}

byte[] Filebytes = File.ReadAllBytes(SelectedFilePath);

然后,我使用插入查询和convert函数将字节插入数据库,以将转换byte[]varbinary

INSERT * INTO TblFile([FILEID], [FILEDATA])  
VALUES('" + Guid.newGuid + "', CONVERT(VARBINARY, '" + Filebytes + "'));

但是,在SQL Server数据库中,的值FILEDATA始终为

0x53797374656D2E427974655B5D

而且,无论选择哪个文件,FILEDATA都始终是该数字。因此,如果您能告诉我为什么会这样,以及我应该采取什么措施来防止这种情况,我将非常感激。


问题答案:

这是一个错误:

INSERT * INTO TblFile([FILEID], [FILEDATA])  
VALUES('" + Guid.newGuid + "', CONVERT(VARBINARY, '" + Filebytes + "'));

截断在此处发生,您应该像这样将其强制转换为varbinary(MAX):

INSERT * INTO TblFile([FILEID], [FILEDATA])  
VALUES('" + Guid.newGuid + "', CONVERT(VARBINARY(MAX), '" + Filebytes + "'));

此处描述了此行为:二进制和varbinary(Transact-SQL)

评论

在数据定义或变量声明语句 中未指定n时 ,默认长度为1。 在CAST函数中未指定n时,默认长度为30

与其通过Query字符串传递数据,不如使用SQL参数,因为否则将传递’“ + Filebytes +”’。

SqlParameter FileDataUploadParameter = Cmd.Parameters.Add("@FileData", SqlDbType.VarBinary);
FileDataUploadParameter.Value = FileToUpload;


 类似资料:
  • 问题内容: 我正在尝试将int []转换为bytes。它也被转换。 我的转换代码是这样的。 假设我输入一个int [] = {10,11,15,41,12,8,4,23,5,17,23,36,6}现在我希望字节数组像这样{10,0 ,0,0,11,0,0,0,15,0,0,0,41,0,0,0,12,0,0,0,8,0,0,0,4,0,0 ,0,23,0,0,0,5,0,0,0,17,0,0,0,

  • 问题内容: 如何将一个4字节的数组转换为相应的Int? 例: 输入: 输出: 我在互联网上发现的某些代码不起作用: 问题答案: 有两个问题: 在64位平台上是64位整数,您的输入数据只有32位。 在所有当前的Swift平台上使用小尾数表示法,您输入的是大尾数。 话虽如此,以下方法会起作用: 或在Swift 3中使用: 使用一些缓冲区指针魔术,您可以避免中间复制到对象(Swift 2): 有关此方法

  • 问题内容: 我想将SQL COUNT的结果存储在变量中,然后将它们除,但是出现错误: 注意:类mysqli_result的对象无法在----中转换为int 我曾经在测试时显示结果…我该如何解决? 问题答案: 您需要先获取结果并将其存储在变量中,然后再进行数学运算。

  • 问题内容: 我有一个数据框(df),看起来像: 对于整个时间序列,我尝试将今天的值除以昨天,并使用以下命令记录结果: 但是我得到以下错误: 我怎样才能解决这个问题?我试图使用以下方法将其转换为float: 但是什么也无法工作。 问题答案: 您可以改用numpy.log。Math.log需要一个数字,而不是数组。

  • 问题内容: 我是Webpack的新手。我想我做错了。我想使用babel将ES6函数转换为ES5函数。因此,我做了一些研究,发现了babel- loader。但是,我不确定自己在做什么。 我运行npm install babel-loader –save-dev并将其添加到我的package.json中 // package.json // webpack.config.js // app / in

  • 我创建了一个python脚本,并想把它给我的朋友。所以我去youtube看了这个视频(在尝试了很多其他视频之后)。我运行它,得到一个薄层色谱库错误。没问题,我找到了解决这个问题的答案,就在这里的堆栈流中。我输入这段代码(将Python35更改为36,并确保我的薄层色谱位于它所说的相同位置)。我运行它,但得到一个不同的错误,在我的cmd提示符中说 我只是想把我的游戏发送给朋友<请帮忙。我正在使用Py