ついつい忘れてしまうのでメモ。
SqlParameterを使って、値を入れるときにNullを入れる方法です。
Imports System.Data.SqlClient Public Class TestClass Private Sub DBTest() Dim conn As New SqlConnection("DB接続文字列") 'StringBuilder使ったほうがStringでつなぐより速いらしい。 Dim strCmd As New System.Text.StringBuilder strCmd.AppendLine("INSERT INTO tbl") strCmd.AppendLine(" ( No ,") strCmd.AppendLine(" Name ) ") strCmd.AppendLine("VALUES ") strCmd.AppendLine(" ( @No , ") strCmd.AppendLine(" @Name ) ") Dim cmd As New SqlCommand(strCmd.ToString(), conn) 'パラメータを作成 Dim param As New SqlParameter("@No", SqlDbType.Int, 0) 'ここでNull値をパラメタにセット。 param.Value = "DBNull.Value" cmd.Parameters.Add(param) Dim param2 As New SqlParameter("@Name", SqlDbType.NText, 0) param2.Value = "DBNull.Value" cmd.Parameters.Add(param2) '上記で作成しているパラメータは下記のようにインスタンス作成省略も可能。 'cmd.Parameters.Add("@No",SqlDbType.Int) 'cmd.Parameters.Add("@Name",SqlDbType.NText) 'DB接続、実行、切断 conn.Open() cmd.ExecuteNonQuery() conn.Close() End Sub End Class
上記はパラメタを使ったサンプルですが、みてわかるようにSystem.DBNullクラスの Value プロパティを入れるだけです。
ちなみに、DBNullクラスはシングルトン クラスであり、インスタンスは1つしか存在しないようです。(つまり開発者はこのインスタンスを作成できない。) >シングルトン クラスとなるので、デザインパターンのSingletonパターンの実装のようですね。
デザインパターンはまだまださっぱしなので、勉強しないといけないですな。。。