这里的问题是,当我插入的图像(我们称之为数据),这是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