今日ハマったこと。 VB.NET 2008でDBへの更新SQLを書いたのだけど、なんでかAffectedRowが0。つまり更新されない。 SQLは↓こんな感じ。 UPDATE table1 SET name = @p_name, memo = @p_memo WHERE id = @p_id で、OleDbCommandにOleDbParameterをセットしていた行が↓こんな感じ。 oCmd = conn.CreateCommand() : : oCmd.Parameters.Add( New OleDbParameter("@p_id",Me.ID) ) oCmd.Parameters.Add( New OleDbParameter("@p_name",Me.Name) ) oCmd.Parameters.Add( New OleDbParameter("@p_memo",Me.Memo) ) : : oCmd.ExecuteNonQuery() こう書いたらうまくUpdateできませんでした。 原因はタイトルの通り、 SQLの順番通りにOleDbParameterをAddしないとダメ だということ。 つまり oCmd.Parameters.Add( New OleDbParameter("@p_id",Me.ID) ) oCmd.Parameters.Add( New OleDbParameter("@p_name",Me.Name) ) oCmd.Parameters.Add( New OleDbParameter("@p_memo",Me.Memo) ) oCmd.Parameters.Add( New OleDbParameter("@p_id",Me.ID) ) こうしないとダメだったようで。 じゃあOleDbParameterのコンストラクタの1番目の引数は一体なんの意味があるんだろうか・・。 2009.07.24. 23:33 追記 AffectedRowsが0じゃなくてException吐いたのかもしれないです。 確か「条件式のデータ型が合わない為、抽出できません」とか、そんな感じの例外(失念)。 抽