0

我试图在驻留在 SQL Server 上的数据库中插入一行。我正在使用 VB .NET 和 ADO .NET 框架。我想要影响的表的结构如下所示:

   CREATE TABLE [dbo].[Users](
  [UserName] [nvarchar](80) NOT NULL,
  [Description] [nvarchar](600) NULL,
  [IDCategory] [int] NULL,
  [RegistrationDate] [datetime] NOT NULL,
  [CategoryFlag] [bit] NULL,
  [TypeFlag] [bit] NULL,
   ...

我已经使用以下代码实现了这一点:

 <WebMethod()> _
   Sub insertElement()
     Dim conn As SqlConnection
     Dim sqlcmd As SqlCommand
     Dim res As Integer

     conn = New SqlConnection(Utilities.ConnectionString)
     sqlcmd = New SqlClient.SqlCommand()
     sqlcmd.Connection = conn
     sqlcmd.CommandType = CommandType.Text
     sqlcmd.CommandText = "insert into Users (UserName, RegistrationDate) values (@user, @date)"
     Dim param As SqlParameter
     param = New SqlParameter("@user", "myself")
     sqlcmd.Parameters.Add(param)
     param = New SqlParameter("@date", '2012/10/11 20:30:15')
     sqlcmd.Parameters.Add(param)

     Try
        conn.Open()
        res = sqlcmd.ExecuteNonQuery()
    Catch ex As Exception

    Finally
        sqlcmd.Dispose()
        conn.Close()
    End Try

Utilities.ConnectionString 只是我创建的一个类,用于重新调整与我的数据库关联的 ConnectionString。

我试图做这样的事情,而不影响任何提交的数据时间并且它有效。但是上面的代码可能在数据时间管理上有一个错误,因为它不起作用。有人可以帮助我吗?

4

1 回答 1

1

我不明白这一行如何

param = New SqlParameter("@date", '2012/10/11 20:30:15')

甚至编译,但我想它应该读

param = New SqlParameter("@date", CDate("2012/10/11 20:30:15", CultureInfo.InvariantCulture))

使用DateTime值而不是 a string

我认为您只需使用空catch块即可吞下异常。


尽管如此,您最好使用以下using语句:

using conn = New SqlConnection(Utilities.ConnectionString), sqlcmd = New SqlClient.SqlCommand()
    sqlcmd.Connection = conn
    sqlcmd.CommandType = CommandType.Text
    ...
    res = sqlcmd.ExecuteNonQuery()
End Using

这将自动关闭/处理您的连接等。

于 2012-08-29T13:53:42.270 回答