不能更新在asp.net中数据库中插入一个大的图像大小(Can't UPDATE a lar

2019-10-20 23:49发布

这里的问题是,当我插入的图像(我们称之为数据),这是1.32MB,它会被插入成功。 但是,如果我将再次插入数据(但因为我用UPSERT,看我的代码,将现在更新),它不会被更新,它会导致对连接超时。

但是,当我插入另一个数据(数据B)这是只有4KB,它也将成功地插入,如果我将再次插入它(这是更新),它将被成功更新。 我能做什么? 我无法理解的问题。 我已经做了我的命令超时2分钟,但什么都没有发生,它只是加载,直到永远。 我还使用了SQL事务,但是什么也没做。

这里是我的代码:

 Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click

    Dim strConnString As String = DataSource.ConnectionString
    Using con As New SqlConnection(strConnString)
        Dim SQLStr As String

        Dim base64String = TextArea1.Value
        Dim imageBytes As Byte() = Convert.FromBase64String(base64String)
        Dim FileSizeOfIMG As String
        FileSizeOfIMG = imageBytes.Length
        Dim ImageTypeDataOfImage As New SqlParameter("@Data", SqlDbType.Image)
        ImageTypeDataOfImage.Value = imageBytes

        SQLStr = "SELECT 1 FROM [Patient_Data].[dbo].[tbPatientImage]   where HospNum='" & Session.Item("HospNum") & "'" & _
                " and IDNum='" & Session.Item("IDNum") & "' and FileType= '" & lblHeader.Text & "'"

        Dim cmd As New SqlCommand(SQLStr, con)
        cmd.Connection = con
        con.Open()

        Dim reader As SqlDataReader = cmd.ExecuteReader()

        If reader.Read() Then
            SQLStr = "UPDATE [Patient_Data].[dbo].[tbPatientImage] SET PatImage= @Data, FileSize= '" & FileSizeOfIMG.ToString & "' , TransDate = GetDate() where HospNum='" & Session.Item("HospNum") & "' and IDNum='" & Session.Item("IDNum") & "' and FileType= '" & lblHeader.Text & "'"
        Else
            SQLStr = "INSERT INTO [Patient_Data].[dbo].[tbPatientImage](HospNum,IDNum, DoctorID, PatImage , FileType, FileName, FileSize , TransDATE) " & _
                    " VALUES (@HospNum,@IDNum, @DoctorID, @Data, @FileType, 'Patient Photo' , @FileSize,  GETDATE())"
        End If
        reader.Close()
        cmd.CommandText = SQLStr    
        cmd.Parameters.AddWithValue("@HospNum", Session.Item("HospNum"))
        cmd.Parameters.AddWithValue("@IDNum", Session.Item("IDNum"))
        cmd.Parameters.AddWithValue("@DoctorID", Session.Item("DoctorID"))
        cmd.Parameters.AddWithValue("@FileType", lblHeader.Text)
        cmd.Parameters.AddWithValue("@FileSize", FileSizeOfIMG.ToString)
        cmd.Parameters.Add(ImageTypeDataOfImage)
        cmd.ExecuteNonQuery()
        con.Close()
        GetData()

    End Using
End Sub

Answer 1:

我还没有想出什么原因导致这个,但我已经通过具有删除查询第一,然后插入数据想出一个补救措施。

   SQLStr = "delete FROM [Patient_Data].[dbo].[tbPatientImage]  where HospNum='" & Session.Item("HospNum") & "'" & _
            " and IDNum='" & Session.Item("IDNum") & "' and FileType= '" & lblHeader.Text & "'"

        Dim cmd As New SqlCommand(SQLStr, con)
        cmd.Connection = con
        con.Open()

        cmd.ExecuteNonQuery()

        SQLStr = "  INSERT INTO [Patient_Data].[dbo].[tbPatientImage](HospNum,IDNum, DoctorID, PatImage , FileType, FileName, FileSize , TransDATE) " & _
                " VALUES (@HospNum,@IDNum, @DoctorID, @Data, @FileType, 'Patient Photo' , @FileSize,  GETDATE())"

        cmd.CommandText = SQLStr
        'cmd.CommandTimeout = 120     
        cmd.Parameters.AddWithValue("@HospNum", Session.Item("HospNum"))
        cmd.Parameters.AddWithValue("@IDNum", Session.Item("IDNum"))
        cmd.Parameters.AddWithValue("@DoctorID", Session.Item("DoctorID"))
        cmd.Parameters.AddWithValue("@FileType", lblHeader.Text)
        cmd.Parameters.AddWithValue("@FileSize", FileSizeOfIMG)
        cmd.Parameters.Add(ImageTypeDataOfImage)
        cmd.ExecuteNonQuery()
        con.Close()
        GetData()
        lblMessage.Text = "Saved."

    End Using
End Sub


文章来源: Can't UPDATE a large image size that was INSERTed in the database in asp.net