使用vb.net编辑

使用vb.net编辑,vb.net,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 St

这是我的编辑代码:

    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
我总是有一个错误:

这是一个有效的日期。指数为0

通道未被识别为有效的日期时间。有一个从索引0开始的未知单词


如何修复它呢?

这是一个很好的例子,说明了为什么您应该始终使用描述性名称。你的参数到处都是。我建议澄清和简化这一点:

SQL=“更新助理成员集首名=@1,姓氏=@2,出生日期=@3,电子邮件=@4,手机=@5,成员日期=@6,其中ID=@7”
sqlparams={
新的SqlParameter(“@1”,SqlDbType.Text,200),
新的SqlParameter(“@2”,SqlDbType.Text,100000),
新的SqlParameter(“@3”,SqlDbType.Date),
新的SqlParameter(“@4”,SqlDbType.Text,100000),
新的SqlParameter(“@5”,SqlDbType.Text,100000),
新的SqlParameter(“@6”,SqlDbType.Date),
新的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=“更新助理成员”
设置First\u Name=@First\u Name,
Last_Name=@Last_Name,
出生日期=@出生日期,
Email=@Email,
Mobile_1=@Mobile_1,
会员资格\日期=@会员资格\日期
其中ID_u979;=@ID_979;”
sqlparams={newsqlparameter(@First_Name),SqlDbType.Text,200),带有{.Value=PrenomBox.Text},
带有{.Value=NomBox.Text}的新SqlParameter(“@Last_Name”,SqlDbType.Text,100000),
带有{.Value=CDate(DnBox.Text)}的新SqlParameter(“@Birth_Date”,SqlDbType.Date),
新的SqlParameter(“@Email”,SqlDbType.Text,100000),带有{.Value=EmailBox.Text},
带有{.Value=TelBox.Text}的新SqlParameter(“@Mobile_1”,SqlDbType.Text,100000),
带有{.Value=CDate(DaBox.Text)}的新SqlParameter(“@Membership_Date”,SqlDbType.Date),
带有{.Value=Guid.Parse(Request.Params(“ID”)}的新SqlParameter(“@ID”,SqlDbType.UniqueIdentifier)

我不确定我是否正确地安排了你的约会,因为你也用了很糟糕的名字,但如果合适的话,你可以改变它们。我还假设它们的内容已经过验证。

我已经将用户界面代码和数据库代码分开。用户输入的验证在UI代码中进行,验证后的代码被发送到数据库代码

您的连接应该是使用它的方法的本地连接,以便可以关闭和释放它<代码>使用…结束使用块为您处理此问题,即使出现错误

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

sqlparams(2).Value=EmailBox.Text
看起来您切换了名字和姓氏。PrenomBox不是第一个名字吗?来自文档“重要!在SQL Server的未来版本中,将删除文本、文本和图像数据类型。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。”这是一个纯英语网站。如果您使用的是不同语言版本的VS,则您有责任翻译错误消息等。“通道未被识别为有效的日期时间。索引0上有一个未知单词。欢迎使用堆栈溢出!”!请仔细阅读,特别是。你在这里的最佳选择是做你的研究,搜索相关的话题,然后尝试一下。在做了更多的研究和搜索之后,把你的尝试写下来,明确地说出你的困境,这可以帮助你得到更好的答案。