如何将上传的图像插入数据库?

时间:2011-02-11 08:59:58

标签: asp.net vb.net

我想将上传的图像插入根目录图像文件夹及其在数据库中的图像列的路径。

我正在使用以下代码。它将路径插入数据库列中的图像,但不插入文件名:

Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click
    On Error Resume Next
    If FileUpload1.HasFile Then
        FileUpload1.SaveAs(IO.Path.Combine(Server.MapPath("images"), FileUpload1.FileName))
    End If
    '/// upload images
    Dim con As New SqlConnection
    Dim cmd As New SqlCommand
    con.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
    con.Open()
    cmd.Connection = con
    cmd.CommandText = "INSERT INTO Table3 (city, hotel, location, avialiability, room, price, image, category, from1, to1, price1, from2, to2, price2, from3, to3, price3, details) VALUES('" & Trim(DropDownList1.SelectedItem.Text) & "','" & Trim(DropDownList2.SelectedItem.Text) & "','" & Trim(TextBox5.Text) & "','" & Trim(TextBox6.Text) & "','" & Trim(DropDownList3.SelectedItem.Text) & "','" & Trim(TextBox7.Text) & "','" & "images/" & FileUpload1.FileName & "','" & Trim(TextBox17.Text) & "','" & Trim(TextBox8.Text) & "','" & Trim(TextBox9.Text) & "','" & Trim(TextBox10.Text) & "','" & Trim(TextBox11.Text) & "','" & Trim(TextBox12.Text) & "','" & Trim(TextBox13.Text) & "','" & Trim(TextBox14.Text) & "','" & Trim(TextBox15.Text) & "','" & Trim(TextBox16.Text) & "','" & (Editor1.Content) & "')"
    cmd.ExecuteNonQuery()
    con.Close()
End Sub

2 个答案:

答案 0 :(得分:1)

试试这个:

    Dim cmd As MySqlCommand = Nothing
    Try
        Dim query As String = "INSERT INTO (city, hotel, location) VALUES (@city, @hotel, @location)"
        cmd = New MySqlCommand(query, connection)
        cmd.Parameters.AddWithValue("@city", ddlCity.SelectedItem.Text)
        cmd.Parameters.AddWithValue("@title", txtTitle.Text)
        cmd.Parameters.AddWithValue("@location", txtLocation.Text)
        cmd.ExecuteNonQuery()
    Catch ex As Exception
        Messagebox.Show("Error: " & ex.Message, MsgBoxStyle.Critical)
    End Try

这里要记住几件重要的事情:

  1. 为组件使用命名约定和有意义的名称。例如用于保存City数据的TextBox的txtCity。你会以这种方式避免混淆。
  2. 下次构建SQL CommandText时使用参数化查询,并始终避免使用字符串连接。这为您节省了大量时间和头痛(也适用于我们; D)。通过这样做,您可以轻松更改查询中的值。此外,当您使用字符串连接来构建查询字符串时,当您的值具有特殊字符时会遇到问题,但是通过使用SQL参数,这将被避免。
  3.   

    它会在数据库列中插入图像的路径,但不会插入文件名。

    您可以尝试通过在代码的该部分设置断点来检查文件名值的来源,以便您可以关注并检查它。

    希望这有帮助。

答案 1 :(得分:0)

试试这个:

''//cmd.ExecuteNonQuery() 暂时评论。
Response.Write(cmnd.CommandText)

看看commandText,如果你能找出问题所在。如果Insert语句的一部分工作,它可能是一个简单的SQL语法错误,你应该能够直观地获取它。如果您仍然看不到问题,请在此处发布您的代码。

顺便说一下,像这样建立你的SQL命令字符串只会引起麻烦。将来尝试使用Parameterised Query - 这将大大有助于保护您的应用程序免受现实世界SQL Injection attacks的影响并节省您的生活时间; - )

HTH