簡體   English   中英

使用 vb.net 編輯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM