private void SetInitialData(int productid) { // データベースから商品情報を読み、Webフォームに設定する // データベースに接続して該当のレコードを得る SqlConnection sqlconn = new SqlConnection( ConfigurationSettings.AppSettings["DSNSTRING"]); // SELECT文を送信するSqlCommandオブジェクトを用意する SqlCommand sqlcmd = new SqlCommand( "SELECT id, productname, price, stock, " + " comment, detail, DATALENGTH(imgdata) As imglength, " + " " createdate, lastupdate FROM Products" + " WHERE id=@id", sqlconn); // パラメータを設定する sqlcmd.Parameters.Add("@id", SqlDbType.Int).Value = productid; // 実行する SqlDataReader sqlreader = null; try { // 接続を開く sqlconn.Open(); // SELECT文を実行する sqlreader = sqlcmd.ExecuteReader(); // レコードの値を取得する if (sqlreader.Read()) { // レコードが存在する // テキストボックスなどに、実際の値を設定する ProductNameText.Text = sqlreader.GetString(1); CreatedateLabel.Text = Server.HtmlEncode(string.Format("登録日 {0:yyyy/MM/dd}", sqlreader.GetDateTime(7))); LastupdateLabel.Text = Server.HtmlEncode(string.Format("最終更新日 {0:yyyy/MM/dd}", sqlreader.GetDateTime(8))); StockList.SelectedIndex = sqlreader.GetInt32(3); PriceText.Text = string.Format("{0:0}", sqlreader.GetDecimal(2)); CommentText.Text = sqlreader.GetString(4); DetailText.Text = sqlreader.GetString(5); // 画像の処理 if (sqlreader.IsDBNull(6) || sqlreader.GetInt32(6) == 0) { // 画像なし ProductImage.Visible = false; NoImageLabel.Visible = true; ImageDeleteChk.Visible = false; } else { // 画像あり ProductImage.ImageUrl = string.Format("productimage.aspx/{0}.jpg", productid); NoImageLabel.Visible = false; ImageDeleteChk.Visible = true; } } else { // レコードが存在しない ErrorMessage.Text = "該当の商品がありません"; } } catch (SqlException ex) { // エラーが発生した Response.AppendToLog(ex.Message); ErrorMessage.Text = "申し訳ございません。データベースエラーのため処理を完了できませんでした"; } finally { // 接続を閉じる if (sqlreader != null) { sqlreader.Close(); } sqlconn.Close(); } }