2011-02-11 46 views
0

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

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

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

你的代码的第一个问题是你使用`On Error Resume Next`。 – 2011-02-11 09:02:36

回答

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参数,则会遇到问题,因此将避免使用此参数。

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

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

希望这会有所帮助。

0

试试这个:

''//cmd.ExecuteNonQuery()评论了现在。
Response.Write(cmnd.CommandText)

看看commandText,如果你能找出问题。如果插入语句的一部分工作,它可能是一个简单的SQL语法错误,您应该可以从视觉上获取它。如果您仍然无法看到问题,请在此处发布您的代码。

顺便说一句,建立这样的SQL命令字符串只会导致头痛。尝试在未来使用Parameterised Query - 它会很长的路要走,从现实世界SQL Injection attacks保护应用程序和挽救你的生命;-)

HTH