2017-03-05 4 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) 

, 쿼리에 FIRSTNAME에 대한 @Fname있다을 FirstName 매개 변수 대신 @FirstName을 지정하고 있습니다. 다른 변수의 대부분은 동일합니다. Command의 주어진 매개 변수 이름이 쿼리의 매개 변수 이름과 일치하지 않으면 명령에서 지정한 매개 변수를 쿼리가 기대하는 것과 연결할 수 없기 때문에 오류가 발생합니다.