2013-03-16 161 views
1

我是VB.NET的初學者,所以您可能需要忍耐一下,但我需要在後面編輯此代碼,以便將空值傳遞到我的數據庫以獲得'imageurl'領域。前端是一個網頁表單,用戶可以輸入書籍的詳細信息,並可選擇上傳書籍封面。將NULL值傳遞給一個GUID

我想更改我的代碼,以便如果文件上傳對話框不滿足hasFile,數據庫中生成的GUID字符串將是一個NULL值(這是因爲我可以使用「無圖像可用」圖像在ASP NullImageUrl財產。)

這是我試過到目前爲止實現,但智能感知告訴我,「String類型的值不能轉換爲‘的System.Guid’。

代碼背後:

Imports System.Data.OleDb 
Partial Public Class addBook 
Inherits System.Web.UI.Page 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

End Sub 

Protected Sub btn_submission_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_submission.Click 
    Dim noFile As String = Nothing 
    Dim myGUID = Guid.NewGuid() 
    Dim newFileName As String = myGUID.ToString() & ".jpg" 
    Dim fileLocationOnServerHardDisk = Request.MapPath("img/thumb") & "/" & newFileName 
    If fu_picture.HasFile Then 
     fu_picture.SaveAs(fileLocationOnServerHardDisk) 
    Else 
     myGUID = noFile 
    End If 
    Dim oleDbConn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString) 
    Dim SqlString As String = "Insert into booklist(Title,Author,PublicationDate,Pages,Publisher,Blurb,imgurl,AverageRating) 
Values (@f1,@f2,@f3,@f4,@f5,@f6,@f7,@f8)" 
    Dim cmd As OleDbCommand = New OleDbCommand(SqlString, oleDbConn) 
    cmd.CommandType = CommandType.Text 
    cmd.Parameters.AddWithValue("@f1", tb_booktitle.Text) 
    cmd.Parameters.AddWithValue("@f2", tb_bookauthor.Text) 
    cmd.Parameters.AddWithValue("@f3", tb_bookpubyear.Text) 
    cmd.Parameters.AddWithValue("@f4", tb_bookpages.Text) 
    cmd.Parameters.AddWithValue("@f5", tb_publisher.Text) 
    cmd.Parameters.AddWithValue("@f6", tb_blurb.Text) 
    cmd.Parameters.AddWithValue("@f7", "img/thumb/" & newFileName) 
    cmd.Parameters.AddWithValue("@f8", rbl_Stars.SelectedValue) 
    oleDbConn.Open() 
    cmd.ExecuteNonQuery() 
    System.Threading.Thread.Sleep("2000") 
    Response.Redirect("~/addedrecord.aspx") 

End Sub 

Protected Sub rbl_Stars_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles rbl_Stars.SelectedIndexChanged 

End Sub 
End Class 

請告訴我,如果我完全錯了我的思路!

編輯:在這個當下,即使文件沒有上傳,在數據庫表中生成一個GUID字符串+ JPG後綴即使圖像本身不存在

+0

試試'myGUID = Nothing'。 – Steve 2013-03-16 17:04:18

回答

3

你應該通過DBNull.Value你的數據庫,如果你不要求

cmd.Parameters.AddWithValue("@f7", _ 
       if(fu_picture.HasFile, "img/thumb/" & newFileName, DbNull.Value) 

ternary operator允許在創建參數你只是測試的標誌HasFile。
如果它爲false,則將參數值設置爲DBNull.Value。如果HasFile爲true,則可以構建到圖像文件的正確路徑。當然,這消除了在代碼之前將Nothing分配給myGuid的必要性。

+0

謝謝,這是完美的! – adaam 2013-03-16 17:13:09