- - PR -
[ODP.NET]Date型フィールドにNullを設定する配列インサート方法は?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-08-14 10:51
ODP.Netの配列インサートを使っています。
Date型フィールドにNull値を設定したいのですが、下記の方法では0001/01/01 00:00が登録されてしまいます。 ---------------------------------------------------------------- Dim m_oConnection = New Oracle.DataAccess.Client.OracleConnection() m_oConnection.ConnectionString = "Data Source=AAAA;User id=BBBB;Password=CCCC" Dim m_oInsertCmd = New Oracle.DataAccess.Client.OracleCommand() m_oInsertCmd.CommandText = "INSERT INTO TABLE01(TIMENOW) VALUES (:TIMENOW)" m_oInsertCmd.Connection = Me.m_oConnection m_oInsertCmd.FetchSize = CType(65536, Long) m_oInsertCmd.ArrayBindCount = 2 m_oInsertCmd.Parameters.Add(New OracleParameter("TIMENOW", OracleDbType.Date, 7, ParameterDirection.Input, True, 32, 32, "TIMENOW", DataRowVersion.Current, Nothing)) Dim d = New Date(1) {} d(0) = Date.Pase("2003/08/14 10:00") m_oInsertCmd.Parameters("TIMENOW").Value = d m_oConnection.Open() m_oInsertCmd.ExecuteNonQuery() m_oConnection.Close() |
|
投稿日時: 2003-08-14 11:42
String型を使用することでNullを代入することができました!
---------------------------------------------- Dim s = New String(1) {} s(0) = "2003/08/14/10:00" s(1) = "" m_oInsertCmd.Parameters("TIMENOW").Value = s |
|
投稿日時: 2003-08-14 13:08
既に解決済みのようですが...ご検討ください。
String型よりも、Oracle.DataAccess.Client.OracleDate型を使用したほうが良いと思います。 String型では、日付のフォーマット設定によっては、うまく動作しないかもしれませんので。 Nullを指定したい場合は、 m_oInsertCmd.Parameters("TIMENOW").Value = Null になります。 |
|
投稿日時: 2003-08-18 09:59
ありがとうございます。
OracleDate型で行うとインスタンスがありませんというエラーがでました。 Object型を使用することでNullを代入することができました! ---------------------------------------------- Dim obj = New OracleDate(1) {} obj(0) = New OracleDate(CDate("2003/08/14 10:00")) obj(1) = OracleDate.Null m_oInsertCmd.Parameters("TIMENOW").Value = obj →実行時にエラー。。。 ---------------------------------------------- Dim obj = New Object(1) {} obj(0) = CDate("2003/08/14 10:00") m_oInsertCmd.Parameters("TIMENOW").Value = obj →obj(1)をNothingのままにしておくとNullがインサート |
1