###前提・実現したいこと
C#でOracleに接続し、データベースを操作するプログラムの書き方を勉強中の身です。
http://www.webcodeexpert.com/2014/01/how-to-create-3-tier-application-in.html?m=1
上記サイトを参考に行っているのですが、update文の箇所のみ上手くいかず、困っています。
(delete、insertなど他の操作はできています)
※上記サイトはSQLServer向けのため、接続コードなど、一部変更を加えました。
###発生している問題・エラーメッセージ
エラーなし。
SQLの実行が上手くいっていないようです。
(C#を介さず実行したところ、問題なくバインドも実行もできました)
デバッグで確認しましたが、「result = cmd.ExecuteNonQuery();」部分でSQLが実行され、変更するレコード数が「result」に格納されるはずが、値が0になり、変更も反映されていませんでした。
バインド変数のパラメーター部分には値が入っていることを確認済です。
DALファイルのUpdateBookRecordを呼び出している箇所を見ても何も気づけませんでした。
色々試しましたが、何分知識も経験も足らず、自己解決は難しそうなため、修正点を教えていただければ幸いです……。
(原因箇所が該当ソースと違う可能性が高い場合はそれだけでも教えていただければ助かります)
###該当のソースコード
C#
1//…DAL.csファイル 2 3public int UpdateBookRecord(BooksDetails_BEL objBEL) 4{ 5 6int result; 7 8try 9{ 10string sql=@" 11UPDATE YY_BOOKDETAILS 12SET BOOKNAME = :BOOKNAME 13,AUTHOR = :AUTHOR 14,PUBLISHER = :PUBLISHER 15,PRICE = :PRICE 16,WHERE BOOKID = :BOOKID 17"; 18 19OracleCommand Add = new OracleCommand (sql,con); 20 21cmd.Parameters.Add("BOOKID", objBEL. BookId); 22cmd.Parameters.Add("BOOKNAME", objBEL. BookName); 23cmd.Parameters.Add("AUTHOR", objBEL. Author); 24cmd.Parameters.Add("PUBLISHER, objBEL. Publisher); 25cmd.Parameters.Add("PRICE", objBEL Price) ; 26 27 28if (con.State == ConnectionState.Closed) 29 { 30con.Open() 31 } 32 33result = cmd.ExecuteNonQuery(); 34 35cmd.Dispose (); 36 37if (result> 0) 38 { 39return result; 40 } 41else 42 { 43return 0; 44 } 45 46} 47}
(インデントが消えて見にくくなってしまい、すいません)
###補足情報(言語/FW/ツール等のバージョンなど)
言語/C#
ツール/visual studio (2010)
DB/Oracle (10g)
oracle.dataaccess version=2.112.1.0