2011-02-11 50 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