2011-12-11 9 views
0

写真が存在していてもデータのみを更新しても、写真は自動的に削除されることに気がつきました。具体的には、データまたは写真、またはその両方を更新するために使用できるコードが必要です。写真やデータを更新するには?

qry = "update StudentDetails.Students set [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],Photo = CASE WHEN @Photo IS NULL THEN Photo ELSE @Photo END where StudentId='" & txtStudentID.Text & "'" 
      cmd = New SqlCommand(qry, cn) 
      cmd.Parameters.Add(New SqlParameter("@StudentID", Val(txtStudentID.Text))) 
      cmd.Parameters.Add(New SqlParameter("@StudentName", txtName.Text)) 
      cmd.Parameters.Add(New SqlParameter("@Day", cboDay.Text)) 
      cmd.Parameters.Add(New SqlParameter("@Month", cboMonth.Text)) 
      cmd.Parameters.Add(New SqlParameter("@Year", txtYear.Text)) 
      cmd.Parameters.Add(New SqlParameter("@Age", Val(lblAge.Text))) 
      cmd.Parameters.Add(New SqlParameter("@DateAdmit", DateTimePicker1.Value)).ToString() 
      cmd.Parameters.Add(New SqlParameter("@Gender", Gender)) 
      cmd.Parameters.Add(New SqlParameter("@GuardianName", txtGName.Text)) 
      cmd.Parameters.Add(New SqlParameter("@Phone", txtPhone.Text)) 
      cmd.Parameters.Add(New SqlParameter("@Email", txtEmail.Text)) 
      cmd.Parameters.Add(New SqlParameter("@Address", txtAddress.Text)) 
      cmd.Parameters.Add(New SqlParameter("@City", txtTown.Text)) 
      cmd.Parameters.Add(New SqlParameter("@Region", cboRegion.Text)) 
      If img Is Nothing Then 
       cmd.Parameters.Add(New SqlParameter("@Photo", DBNull.Value)) 
      Else 
       cmd.Parameters.Add(New SqlParameter("@Photo", img)) 
      End If 

     cmd.ExecuteNonQuery() 
     MessageBox.Show("Record successfully Updated", "Updated", MessageBoxButtons.OK, MessageBoxIcon.Informaation) 
+0

あなたはプロファイラを使用してクエリをトレースし、それを投稿することができますか?写真がヌル(削除されていない)になると、 "@写真"パラメータの値はどのようになりますか? 「写真」データタイプとは何ですか? –

+0

いくつかの小さなこと:文字列連結を使用する代わりに@StudentIDパラメーターを使用する必要があります。 Val機能に注意してください。誰かが予期しない値を入力したときに期待していないことが起こるかもしれません:http://msdn.microsoft.com/en-us/library/k7beh1x9(v=vs.80).aspx –

+0

img変数はどんなデータ型ですか? –

答えて

0

これは1つの解決策です。

qry = "update StudentDetails.Students set [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],Photo = CASE WHEN @Photo IS NULL THEN Photo ELSE @Photo END where StudentId='" & txtStudentID.Text & "'" 

:置き換え

Dim sbQry As New StringBuilder(1000) 

    sbQry.Append("update StudentDetails.Students set [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected]") 
    If img IsNot Nothing Then 
     sbQry.Append(",[email protected]") 
    End If 
    sbQry.Append(" where StudentId='").Append(txtStudentID.Text).Append("'") 

    cmd = New SqlCommand(sbQry.ToString, cn) 

をし、この置き換えます。これで

If img Is Nothing Then 
    cmd.Parameters.Add(New SqlParameter("@Photo", DBNull.Value)) 
Else 
    cmd.Parameters.Add(New SqlParameter("@Photo", img)) 
End If 

を:

If img IsNot Nothing Then 
    cmd.Parameters.Add(New SqlParameter("@Photo", img)) 
End If 
+0

StringBuilderが定義されていないというエラーが発生しましたが、定義しようとしましたが、そのエラーが発生し続けています。定義方法を教えてください。前もって感謝します。 – Akaglo

+0

ハハハ:)私は今それを持っています。私はStringBuilder(1000)をSystem.Text.StringBuilder(1000)に置き換えました。私はcompetent_techがとても助けになってくれることを嬉しく思っています – Akaglo

+0

@Akaglo:喜んでお手伝いします。将来の訪問者にこの回答があなたの質問の解決に役立ったことを知らせるために、チェックマークと答えの横にある上矢印をクリックする必要があります。 –

関連する問題