以自定义格式添加到数据库日期时间

时间:2015-04-16 10:19:07

标签: vb.net

我需要以格式

在数据库中添加当前的date.time
  

dd / MM / yyyy HH:mm

这种没有格式化的方式很有效

 Public Sub AddIt(Name As String)
    Try
        Dim addString As String = "Insert into table (Name, DateAdd) values ('" & Name & "', '" & Date.Now & "')"
        sqlcon.Open()
        SqlCom = New SqlCommand(addString, sqlcon)
        SqlCom.ExecuteNonQuery()
        sqlcon.Close()
    Catch ex As Exception
    End Try
End Sub

尝试使用格式化参数

Public Sub Town(Name As String)
    Try
        Dim time As DateTime = DateTime.Now
        Dim format As String = "dd.MM.yyyy HH:mm"
        Dim MyCommand As SqlCommand
        MyCommand = New SqlCommand("Insert into test (Name, DateAdd) values (@name, @test)", sqlcon)
        MyCommand.Parameters.AddWithValue("@name", form2.txtName.Text)
        MyCommand.Parameters.AddWithValue("@test", time.ToString(format))
        sqlcon.Open()
        MyCommand.ExecuteNonQuery()
        sqlcon.Close()
    Catch ex As Exception
    End Try
End Sub

它说连接没有关闭。连接状态是打开的

2 个答案:

答案 0 :(得分:2)

我怀疑为什么你需要以这种格式在数据库中的日期和时间 - 将完整的Date对象存储在数据库中会更容易,如第一个代码片段所示,然后每当你检索该数据,使用DateTime.toString("dd/MM/yyyy HH:mm")

将其转换为您需要的格式

我感觉你当前的问题是由前一个异常引起的 - 具体来说,因为你的异常处理中没有包含任何代码,如果由于SQL语句失败而发生异常,连接将保持打开状态 - 导致下一次打开的呼叫失败。

您可以通过在尝试重新打开连接状态之前检查连接状态来解决此问题 - SqlConnection公开ConnectionState属性,您可以检查该连接是否已打开。

答案 1 :(得分:0)

在初始化SQLcommand

之前打开连接
Public Sub Town(Name As String)
    Try
        Dim time As DateTime = DateTime.Now
        Dim format As String = "dd.MM.yyyy HH:mm"
        sqlcon.Open()
        Dim MyCommand As SqlCommand
        MyCommand = New SqlCommand("Insert into test (Name, DateAdd) values (@name, @test)", sqlcon)
        MyCommand.Parameters.AddWithValue("@name", form2.txtName.Text)
        MyCommand.Parameters.AddWithValue("@test", time.ToString(format))
        MyCommand.ExecuteNonQuery()
        sqlcon.Close()
    Catch ex As Exception
    End Try
End Sub