[英]Edit using vb.net
這是我的編輯代碼:
Dim nom As String = NomBox.Text
Dim prenom As String = PrenomBox.Text
Dim email As String = EmailBox.Text
Dim dn As String = DnBox.Text
Dim da As String = DaBox.Text
Dim tel As String = TelBox.Text
Dim SQL As String
Dim sqlparams() As SqlParameter
If Page.IsPostBack Then
SQL = " UPDATE ASSMS__Members SET First_Name=@1,Last_Name=@2,Birth_Date=@3,Email=@4,Mobile_1=@5,Membership_Date=@6 WHERE ID_=@7"
sqlparams = {
New SqlParameter("@1", SqlDbType.Text, 200),
New SqlParameter("@2", SqlDbType.Text, 100000),
New SqlParameter("@3", SqlDbType.Date),
New SqlParameter("@4", SqlDbType.Text, 100000),
New SqlParameter("@5", SqlDbType.Text, 100000),
New SqlParameter("@6", SqlDbType.Date),
New SqlParameter("@7", SqlDbType.UniqueIdentifier)
}
sqlparams(0).Value = NomBox.Text
sqlparams(1).Value = PrenomBox.Text
sqlparams(2).Value = EmailBox.Text
sqlparams(3).Value = DnBox.Text
sqlparams(4).Value = DaBox.Text
sqlparams(5).Value = TelBox.Text
sqlparams(6).Value = Guid.Parse(Request.Params("ID_"))
_Conn.Connection_On()
_Conn.Execute_Sql_Prepare(SQL, "NonQuery", sqlparams)
_Conn.Connection_Off()
Response.Redirect("./ListeMembres.aspx")
End If
我總是有一個錯誤:
La chaîne n'a pas été reconnue comme DateTime valide。 Il existe un mot inconnu commençant à l'index 0.
該通道未被識別為有效的 DateTime。 有一個從索引 0 開始的未知單詞。
請問如何解決?
這是一個很好的例子,說明為什么您應該始終使用描述性名稱。 您的參數無處不在。 我建議澄清和簡化這一點:
SQL = " UPDATE ASSMS__Members SET First_Name=@1,Last_Name=@2,Birth_Date=@3,Email=@4,Mobile_1=@5,Membership_Date=@6 WHERE ID_=@7"
sqlparams = {
New SqlParameter("@1", SqlDbType.Text, 200),
New SqlParameter("@2", SqlDbType.Text, 100000),
New SqlParameter("@3", SqlDbType.Date),
New SqlParameter("@4", SqlDbType.Text, 100000),
New SqlParameter("@5", SqlDbType.Text, 100000),
New SqlParameter("@6", SqlDbType.Date),
New SqlParameter("@7", SqlDbType.UniqueIdentifier)
}
sqlparams(0).Value = NomBox.Text
sqlparams(1).Value = PrenomBox.Text
sqlparams(2).Value = EmailBox.Text
sqlparams(3).Value = DnBox.Text
sqlparams(4).Value = DaBox.Text
sqlparams(5).Value = TelBox.Text
sqlparams(6).Value = Guid.Parse(Request.Params("ID_"))
對此:
SQL = "UPDATE ASSMS__Members
SET First_Name = @First_Name,
Last_Name = @Last_Name,
Birth_Date = @Birth_Date,
Email = @Email,
Mobile_1 = @Mobile_1,
Membership_Date = @Membership_Date
WHERE ID_ = @ID_"
sqlparams = {New SqlParameter("@First_Name", SqlDbType.Text, 200) With {.Value = PrenomBox.Text},
New SqlParameter("@Last_Name", SqlDbType.Text, 100000) With {.Value = NomBox.Text},
New SqlParameter("@Birth_Date", SqlDbType.Date) With {.Value = CDate(DnBox.Text)},
New SqlParameter("@Email", SqlDbType.Text, 100000) With {.Value = EmailBox.Text},
New SqlParameter("@Mobile_1", SqlDbType.Text, 100000) With {.Value = TelBox.Text},
New SqlParameter("@Membership_Date", SqlDbType.Date) With {.Value = CDate(DaBox.Text)},
New SqlParameter("@ID_", SqlDbType.UniqueIdentifier) With {.Value = Guid.Parse(Request.Params("ID_"))}}
我不確定我是否以正確的方式得到了你的日期,因為你也為他們使用了糟糕的名字,但你可以在適當的時候切換它們。 我還假設它們的內容已經過驗證。
我已經將用戶界面代碼和數據庫代碼分開了。 用戶輸入的驗證發生在 UI 代碼中,經過驗證的代碼被發送到數據庫代碼。
您的連接應該是使用它的方法的本地連接,以便可以關閉和處理它。 即使出現錯誤, Using...End Using
塊也會為您處理。
Private Sub OPCode()
If Page.IsPostBack Then
'Validate user input
Dim Dn As Date
If Not Date.TryParse(DnBox.Text, Dn) Then
'Alert the user and allow user to correct input
Exit Sub
End If
Dim Da As Date
If Not Date.TryParse(DaBox.Text, Da) Then
'Alert the user and allow user to correct input
Exit Sub
End If
Try
UpdateDatabase(PrenomBox.Text, NomBox.Text, EmailBox.Text, Dn, Da, TelBox.Text, Guid.Parse(Request.Params("ID_")))
Catch ex As Exception
'Alert the user of Update Failure
Exit Sub
End Try
Response.Redirect("./ListeMembres.aspx")
End If
End Sub
Private Sub UpdateDatabase(FirstName As String, LastName As String, Email As String, Dn As Date, Da As Date, Tel As String, ID As Guid)
Dim SQL As String = "UPDATE ASSMS__Members SET
First_Name = @FirstName,
Last_Name = @LastName,
Birth_Date = @DOB,
Email = @Email,
Mobile_1 = @Mobile,
Membership_Date = @MemberDate
WHERE ID_ = @ID;"
Using cn As New SqlConnection("Your connection string"),
cmd As New SqlCommand(SQL, cn)
With cmd.Parameters
.Add("@FirstName", SqlDbType.Text, 200).Value = FirstName
.Add("@LastName", SqlDbType.Text, 100000).Value = LastName
.Add("@DOB", SqlDbType.Date).Value = Da
.Add("@Email", SqlDbType.Text, 100000).Value = Email
.Add("@Mobile", SqlDbType.Text, 100000).Value = Tel
.Add("@MemberDate", SqlDbType.Date).Value = Dn
.Add("@ID", SqlDbType.UniqueIdentifier).Value = ID
End With
cn.Open()
cmd.ExecuteNonQuery()
End Using
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.