0

我目前在我正在制作的程序中遇到了最令人恼火的错误,我非常感谢任何可以帮助我解决它的帮助或建议。我遇到问题的程序部分是一个表单,它将所选图像加载到图片框中,然后在单击“保存”按钮时将其保存到 MS Access 数据库中。执行“Browse_Click”事件时,它会提示您搜索图像位置并将其加载到图片框(pbImage)中。该位工作正常并成功将其加载到图片框中。我遇到的问题是当我尝试将图像保存到我的访问数据库时,我收到以下参数异常错误“路径不是合法形式”。据我所知,我所有的代码都是功能齐全的,因为它以前可以工作,

下面的第一段代码是当我想将图片加载到图片框中时执行的。下面的部分是“保存”代码。

Public Class Manage_Cottages
Dim imgName As String
Dim daImage As OleDbDataAdapter
Dim dsImage As DataSet
Private Sub btnBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowse.Click
    Dim dlgImage As FileDialog = New OpenFileDialog()
    dlgImage.Filter = "Image File (*.jpg;*.bmp;*.gif)|*.jpg;*.bmp;*.gif"
    If dlgImage.ShowDialog() = DialogResult.OK Then
        imgName = dlgImage.FileName
        Dim selectedFileName As String = dlgImage.FileName
        txtPath.Text = selectedFileName
        Dim newimg As New Bitmap(imgName)
        pbImage.SizeMode = PictureBoxSizeMode.StretchImage
        pbImage.Image = DirectCast(newimg, Image)
    End If
    dlgImage = Nothing
    imgName = " "
End Sub'

保存代码

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    Dim cnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=..\Debug\CourseworkDatabase.mdb"
    Dim CN As New OleDbConnection(cnString)
    CN.Open()

     If imgName <> "" Then
        Dim fs As FileStream
        fs = New FileStream(imgName, FileMode.Open, FileAccess.Read) <----- where the error occurs.
        Dim picByte As Byte() = New Byte(fs.Length - 1) {}
        fs.Read(picByte, 0, System.Convert.ToInt32(fs.Length))
        fs.Close()
        Dim strSQL As String
        strSQL = "INSERT INTO Cottage_Details([Image]) values (" & " @Img)"
        Dim imgParam As New OleDbParameter()
        imgParam.OleDbType = OleDbType.Binary
        imgParam.ParameterName = "Img"
        imgParam.Value = picByte
        Dim cmd As New OleDbCommand(strSQL, CN)
        cmd.Parameters.Add(imgParam)
        cmd.ExecuteNonQuery()
        MessageBox.Show("Image successfully saved.")
        cmd.Dispose()
        CN.Close()
    End If
End Sub

下面也是即时窗口中显示的前几行(不确定是否有助于诊断问题)

类型为“System.ArgumentException”的第一次机会异常发生在 mscorlib.dll System.Transactions 严重:0:http: //msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled Unhandled exceptionAlphaHolidayCottages .vshost.exeSystem.ArgumentException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089路径不是合法形式。在 System.IO.Path.NormalizePath(字符串路径,布尔 fullCheck,Int32 maxPathLength)

感谢您的时间和帮助,如果有人可以帮助我解决问题,那就太高兴了。

克里斯

4

1 回答 1

1

您在末尾将 imgName 设置为“” btnBrowse_Click,因此当您保存文件时,btnSave_Click您会尝试将其保存为文件名“”。

尝试imgName = " "在 末尾删除btnBrowse_Click,或在保存之前为 imgName 分配一个正确的文件名。

于 2013-02-07T03:46:47.313 回答