【问题标题】:C#: Use byte array to save PictureBox images to SQL Server database through a datatable objectC#:使用字节数组通过数据表对象将PictureBox图像保存到SQL Server数据库
【发布时间】:2017-08-11 18:46:23
【问题描述】:

我正在学习 C#,包括与 SQL Server 数据库交互。但是,我无法以编程方式将 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("Text", playerTable, "Name") - 我想我需要绑定图片框1 IMage 字节数组但不知道该怎么做

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

我知道我必须将图像转换为字节数组来保存,但我对如何将图像字节数组绑定到 dataTable 感到困惑,以便在表单关闭时将其上传到数据库。我已经做了很多谷歌搜索,但解决方案似乎与我正在使用的代码不匹配......

鉴于上述情况,您能否提供必要的代码?

【问题讨论】:

  • 如果您找不到适合您的代码的解决方案,最好在您的问题中包含足够的该代码示例。
  • herehere

标签: c# sql-server image


【解决方案1】:

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

只需使用 varbinary。

【讨论】:

  • 谢谢 Segey - 会的
【解决方案2】:

一般的做法是:

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

2) 获取 jpeg 并将其转换为字节数组

3) 将字节数组作为参数添加到您的 sql 命令对象

4) 执行非查询插入。

【讨论】:

  • chris-crush-code 谢谢你的回答......我可以请你给我一个代码示例:3)将字节数组作为参数添加到你的sql命令对象.. .我的sqlCommand对象命名为PlayersCommand,假设字节数组命名为playerPhotoArray...
  • 你会使用 PlayersCommand.AddParameterWIthValue("parameter name goes here", playerPhotoArray);如果您发布代码,我可以提供更多帮助
【解决方案3】:

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

【讨论】:

  • 在共享主机环境中,您将无法访问文件系统,因此您需要将其保存到数据库中
  • 你不会“需要”。您可以获取云服务器,设置自己的云服务器,联系托管机构,因为他们会为您设置一个。它有很多选择。作为免责声明,我不会声称您找不到数据库比文件系统性能更好的特定场景,我要说的是,这些场景非常具体且相距甚远。您几乎总是会更轻松,只需将 url 存储到图像而不是图像本身,在数据库中。
猜你喜欢
  • 1970-01-01
  • 2014-03-03
  • 2013-06-26
  • 1970-01-01
  • 2018-07-20
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
相关资源
最近更新 更多