C#:使用字节数组通过数据表对象将PictureBox图像保存到SQL Server数据库

问题描述:

我正在学习C#,包括与SQL Server数据库交互。然而,我坚持以编程方式将PictureBox图像添加到SQL Server数据库:C#:使用字节数组通过数据表对象将PictureBox图像保存到SQL Server数据库

我创建了一个带有文本字段的图片框,一个图片框,可以成功显示/编辑/添加单个记录到数据库,操作:

DB Connection = RRConnection 

SqlCommand object = playersCommand 

SqlDataAdapter object = playersAdapter 

dataTable object = playersTable 

currencyManager = playerManager 

PictureBox1 control = including a button to navigate filesystem and select/load jpeg image into form PictureBox1 

绑定一样 - txtName.DataBindings.Add(“文本”,playersTable,“姓名”)的文本字段 - 我想我需要的picturebox1图像字节数组绑定,但不知道如何要做

当表格关闭时,表被加载到SQLServer数据库表tbl_BB到名为“Image”的列中类型的图像。

我知道我必须将图像转换为字节数组才能保存,但我很困惑如何将图像字节数组绑定到dataTable,从而允许它在窗体关闭时上载到数据库。我已经做了大量的谷歌搜索,但解决方案似乎不匹配我使用的代码...

鉴于上述情况,你能建议这方面的必要代码吗?

+0

如果您找不到适合您的代码的解决方案,那么在您的问题中包含足够的代码示例会很有帮助。 – Adrian

+0

请参阅[这里](https://*.com/a/35452889/5045688)和[这里](https://*.com/a/22938707/5045688)。 –

不要使用它将很快从MS SQL中删除的图像。 https://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql

只要使用varbinary。

+0

谢谢Segey - 将会做 – user8441794

一般的做法是:

1)SQL Server将有一个varbinary(max)列。

2)采取JPEG并将其转换为一个字节数组

3)字节数组作为放慢参数添加到SQL命令对象

4)用于插入执行nonquery。

+0

chris-crush-code感谢您的回答......请问您给我一个代码示例: 3)将字节数组作为参数添加到您的sql命令对象中。 我的sqlCommand对象被命名为PlayersCommand,并假定字节数组被命名为playerPhotoArray ... – user8441794

+0

你会使用PlayersCommand.AddParameterWIthValue(“参数名称在这里”,playerPhotoArray);如果您发布您的代码,我可以在共享主机环境中进一步帮助 –

我可以建议你直接将图像保存在磁盘上,并在数据库中引用图像的路径吗?将图像保存在数据库中被认为是不好的做法。

+0

,您将无法访问文件系统,因此您需要将其保存到数据库 –

+0

您不会“需要”。你可以得到一个云服务器,设置你自己的,联系托管机构,为他们设置一个。 它有很多选项。 作为一个免责声明,我不会声称你不能找到一个特定的场景,其中数据库的性能比文件系统更好,我所说的是,这些场景是非常具体的,而且非常具体。你几乎总是有一个更简单的时间,简单地存储在一个数据库中的图像,而不是图像本身。 –