1

私は VB.NET の初心者なので、我慢する必要があるかもしれませんが、このコード ビハインドを編集して、データベースの「imageurl」フィールドに null 値が渡されるようにする必要があります。フロント エンドは、ユーザーが本の詳細を入力できる Web フォームで、本の表紙をアップロードするオプションがあります。

ファイル アップロード ダイアログが 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

私の考え方が完全に間違っているかどうか教えてください!

EDIT:現時点では、ファイルがアップロードされていなくても、画像自体が存在しなくてもデータベーステーブルにguid文字列+ jpgサフィックスが生成されます

4

1 に答える 1

3

要件を満たしていない場合は、 DBNull.Valueをデータベースに渡す必要があります

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

項演算子を使用すると、パラメーターを作成するときにフラグHasFileをテストできます。
falseの場合は、パラメーター値をDBNull.Valueに設定します。HasFileがtrueの場合、イメージファイルへの正しいパスを作成できます。もちろん、これにより、以前のコードでmyGuidにNothingを割り当てる必要がなくなります。

于 2013-03-16T17:07:46.010 に答える