(VB.Net)パラメタ使ったSQLで、NULL値を入れる。
ついつい忘れてしまうのでメモ。

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パターンの実装のようですね。
デザインパターンはまだまださっぱしなので、勉強しないといけないですな。。。
[PR]
by jehoshaphat | 2008-08-26 09:50 | .Net開発 | Trackback | Comments(2)
トラックバックURL : http://jehupc.exblog.jp/tb/8520966
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
Commented at 2008-08-26 12:34 x
ブログの持ち主だけに見える非公開コメントです。
Commented at 2008-08-26 13:56
ブログの持ち主だけに見える非公開コメントです。


<< (ネットワーク)無線LANのM... 32bitアーキテクチャでのメ... >>