asp.net - 单击按钮时出错:System.InvalidCastException:'无法将'System.Int32'类型的对象转换为'System.Byte []'类型。
问题描述
我在代码中的这一行出现错误:
[bytes = DirectCast(sdr("MedicalCertificateID"), Byte())]
你知道出了什么问题吗?
Protected Sub btnDownload_Click(sender As Object, e As EventArgs)
Dim MedicalCertificateID As Integer = Integer.Parse(TryCast(sender, LinkButton).CommandArgument)
Dim bytes As Byte()
Dim fileName As String, contentType As String
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("##").ConnectionString)
Using cmd As New SqlCommand("SELECT * FROM tblMedicalResults WHERE MedicalCertificateID = @MedicalCertificateID", conn)
cmd.Parameters.AddWithValue("@MedicalCertificateID", MedicalCertificateID)
conn.Open()
Using sdr As SqlDataReader = cmd.ExecuteReader()
sdr.Read()
bytes = DirectCast(sdr("MedicalCertificateID"), Byte())
解决方案
如果您只需要将整数值转换为其字节表示,则只需一行代码
Dim bytes As Byte() = BitConverter.GetBytes(MedicalCertificateID)
无需对数据库运行查询,因为变量MedicalCertificateID在 WHERE 语句中用于查找包含您要读回的值的 a 字段的记录。
如果要检查记录是否存在,则只需检查 sdr.Read 的返回值
Using sdr As SqlDataReader = cmd.ExecuteReader()
if sdr.Read() Then
' record exists....
End If
End using
推荐阅读
- google-cloud-ml - 在 Vertex AI 上的 Kubeflow Pipelines 中运行 ID
- javascript - 在 midijs 中循环播放音频?
- javascript - 创建从 PDF 计算数据的工具
- c# - 如何获取和解析 CI 管道中所有生成的 coverage.cobertura 文件?
- java - 错误:服务“环境”必须是映射而不是数组
- c++ - 如何判断演示文稿是哪个全屏 Keynote 窗口?
- reactjs - 删除状态 React Hooks 中的数据
- java - Selenium Web Driver Java - 用户和密码始终使用
- c# - 无法使用 c# HttpClient 模拟 curl 请求
- c# - WPF绑定第二个ListBox与第一个ListBox中的选定项目相关