fc2ブログ

データの削除(delete)

データ削除のSQLとコードは、次のようになります。やはり、BeginTxメソッドに少し手が加わっています。
スポンサーリンク

  Const DELETE_VALUE_SQL As String = "delete from t_value " & _
"where term = :term and company_id = :company_id and market_id = " & GET_MARKET_ID_SQL & " and datetime = :datetime " & _
" and category_id = " & GET_CATEGORY_ID_SQL & " and item_id = " & GET_ITEM_ID_SQL & " ;"

Sub BeginTx()
_tx = _conn.BeginTransaction()
_createCom = New NpgsqlCommand(SET_VALUE_SQL, _conn, _tx)
InitCreateUpdate(_createCom)
_updateCom = New NpgsqlCommand(UPDATE_VALUE_SQL, _conn, _tx)
InitCreateUpdate(_updateCom)

_deleteCom = New NpgsqlCommand(DELETE_VALUE_SQL, _conn, _tx)
_deleteCom.Parameters.Add(New NpgsqlParameter("term", DbType.String))
_deleteCom.Parameters.Add(New NpgsqlParameter("company_id", DbType.Int32))
_deleteCom.Parameters.Add(New NpgsqlParameter("market_name", DbType.String))
_deleteCom.Parameters.Add(New NpgsqlParameter("datetime", DbType.DateTime))
_deleteCom.Parameters.Add(New NpgsqlParameter("category_name", DbType.String))
_deleteCom.Parameters.Add(New NpgsqlParameter("item_name", DbType.String))
_deleteCom.Prepare()
End Sub

Sub Delete(ByVal sv As SeqValue)
_deleteCom.Parameters("term").Value = sv.term
_deleteCom.Parameters("company_id").Value = sv.company_id
_deleteCom.Parameters("market_name").Value = sv.market.DBItemName
_deleteCom.Parameters("datetime").Value = sv.datetime
_deleteCom.Parameters("category_name").Value = sv.category_name
_deleteCom.Parameters("item_name").Value = sv.item_name
_deleteCom.ExecuteNonQuery()
End Sub
この処理を呼び出す側は次のコードのようにします。SeqValueDAO#BeginTxのあと、SeqValueDAO#Create、SeqValueDAO#Update、SeqValueDAO#Deleteを混在させても構いません。

Dim dao As New SeqValueDAO
dao.BeginTx()
dao.Create(seqValue1)
dao.Create(seqValue2)
dao.Create(seqValue3)
dao.Update(seqValue4)
dao.Update(seqValue5)
dao.Update(seqValue6)
dao.Delete(seqValue7)
dao.Delete(seqValue8)
dao.Delete(seqValue9)
' ・・・
dao.CommitTx()

検索ワード:SQL、delete
スポンサーリンク
<<データの更新(update) | ホーム | LINQ to SQLを採用しなかった理由>>
コメント(0)
コメントの投稿
トラックバック(0)