2013-03-16 5 views
1

Я являюсь новичком на VB.NET, поэтому вам, возможно, придется нести со мной, но мне нужно отредактировать этот код позади, так что пустое значение передается в мою базу данных для 'imageurl' поле. Передняя часть представляет собой веб-форму, в которой пользователь может вводить сведения о книге, с возможностью загрузки обложки книги.Передача значения NULL GUID

Я хочу изменить свой код, чтобы в случае, если диалоговое окно загрузки файла не удовлетворяет hasFile, строка GUID, сгенерированная в базе данных, будет значением NULL (это значит, что у меня может быть изображение «без изображения» с использованием NullImageUrl недвижимости в ASP.)

Это то, что я пытался реализовать до сих пор, но IntelliSense говорит мне, что «Значение типа String, не могут быть преобразованы в„System.Guid“.

Код Behind :

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 

Скажите, пожалуйста, если я полностью ошибаюсь в своей линии мышления!

EDIT: В этот настоящий момент, даже если файл не загружен, GUID, строка + суффикс JPG генерируются в таблице базы данных, даже если само изображение не существует

+0

Попробуйте 'myGUID = Nothing'. – Steve

ответ

3

Вы должны пройти DBNull.Value к вашей БД, если вы не требование

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

ternary operator позволяет проверить HasFile флаг только при создании параметра.
Если это значение false, вы устанавливаете значение параметра DBNull.Value. Если HasFile истинно, вы можете создать правильный путь к вашему файлу изображений. Конечно, это устраняет необходимость назначать Nothing myGuid в коде раньше.

+0

Спасибо, что это отлично! – adaam

Смежные вопросы