2017-03-05 60 views
-1

遇到標量變量問題。輸出表示代碼需要聲明fname標量變量。代碼顯示在下面。任何幫助將不勝感激。標量變量問題

Dim conn As SqlConnection 
Dim cmd As SqlCommand 

Dim fname As String = firstname.Text 
Dim strSurname As String = surname.Text 
Dim strAddress As String = address.Text 
Dim strGraveType As String 

Dim GraveNo1 As String 
Dim GraveNo2 As String 
Dim GraveNo3 As String 

Dim filename As String 
Dim photoFilePath As String 

If Not radSingle.Checked Or radDouble.Checked Or radTreble.Checked Then 
    MsgBox("Please Select a Grave Type") 
ElseIf radSingle.Checked Then 
    strGraveType = "Single" 
ElseIf radDouble.Checked Then 
    strGraveType = "Double" 
ElseIf radTreble.Checked Then 
    strGraveType = "Treble" 
End If 

GraveNo1 = txtGraveNo1.Text 
GraveNo2 = txtGraveNo2.Text 
GraveNo3 = txtGraveNo3.Text 


If GravePhotoUpload.HasFile Then 
    If GravePhotoUpload.PostedFile.ContentType = "image/jpeg" Then 

     Try 
      filename = Path.GetFileName(GravePhotoUpload.FileName) 
      GravePhotoUpload.SaveAs(Server.MapPath("../Images/") + filename) 
      photoFilePath = "Images/" + filename 
     Catch ex As Exception 
      MsgBox("ERROR - The file could not be uploaded. The following error occured: " + ex.Message) 

     End Try 
    Else 
     MsgBox("Please upload a JPG File Format") 
    End If 
End If 

Dim cmdstring As String = "INSERT INTO DeathRecords(FirstName, Surname, Address, GraveType, GraveNo1, GraveNo2, GraveNo3, GravePhoto) Values (@Fname, @strSurname, @strAddress, @strGraveType, @GraveNo1, @GraveNo1, @GraveNo3, @photoFilePath)" 

conn = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DrumcreeCemetery.mdf;Integrated Security=True") 
cmd = New SqlCommand(cmdstring, conn) 

cmd.Parameters.AddWithValue("@FirstName", fname) 
cmd.Parameters.AddWithValue("@Surname", strSurname) 
cmd.Parameters.AddWithValue("@Address", strAddress) 
cmd.Parameters.AddWithValue("@GraveType", strGraveType) 
cmd.Parameters.AddWithValue("@GraveNo1", GraveNo1) 
cmd.Parameters.AddWithValue("@GraveNo2", GraveNo2) 
cmd.Parameters.AddWithValue("@GraveNo3", GraveNo3) 
cmd.Parameters.AddWithValue("@GravePhoto", photoFilePath) 

Try 
    conn.Open() 
    cmd.ExecuteNonQuery() 
    conn.Close() 
Catch ex As Exception 
    MsgBox(ex.Message) 
End Try 
+1

閱讀您的查詢 - 您在那裏使用了'@ Fname',但是然後使用'@ FirstName'作爲參數 – Plutonix

回答

0

在查詢中定義的參數:

Dim cmdstring As String = "INSERT INTO DeathRecords(FirstName, Surname, Address, GraveType, GraveNo1, GraveNo2, GraveNo3, GravePhoto) Values (@Fname, @strSurname, @strAddress, @strGraveType, @GraveNo1, @GraveNo1, @GraveNo3, @photoFilePath)" 

不匹配,你在你的命令設置的參數:

cmd.Parameters.AddWithValue("@FirstName", fname) 
cmd.Parameters.AddWithValue("@Surname", strSurname) 
cmd.Parameters.AddWithValue("@Address", strAddress) 
cmd.Parameters.AddWithValue("@GraveType", strGraveType) 
cmd.Parameters.AddWithValue("@GraveNo1", GraveNo1) 
cmd.Parameters.AddWithValue("@GraveNo2", GraveNo2) 
cmd.Parameters.AddWithValue("@GraveNo3", GraveNo3) 
cmd.Parameters.AddWithValue("@GravePhoto", photoFilePath) 

例如,你的查詢有@Fname的名字,但是您改爲爲FirstName參數指定@FirstName。大部分其他變量也一樣。如果Command中給定的參數名稱與查詢中的參數名稱不匹配,則Command無法將您指定的參數鏈接到查詢所期望的內容,從而導致您收到的錯誤。