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の代わりに値を使用します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 に答える