private bool InsertDB() { // データベースに商品情報を書き込む // 成功したらtrue、失敗したらfalseを返す // コントロールにユーザーが入力した値を取得 string productname = ProductNameText.Text; // 商品名 string comment = CommentText.Text; // 概要 string detail = DetailText.Text; // 解説 // 以下は、Parseメソッドで例外が発生する可能性があるが // 検証コントロールで書式チェックをしているので // 例外が発生する可能性はなく、ここではtry〜catchでの例外チェックは省略 Decimal price = Decimal.Parse(PriceText.Text); int stocknum = int.Parse(StockList.SelectedValue); // データベースと接続して更新する // コネクションを準備する SqlConnection sqlconn = new SqlConnection(ConfigurationSettings.AppSettings["DSNSTRING"]); // INSERT文を送信するSqlCommandオブジェクトを用意する SqlCommand sqlcmd = new SqlCommand( "INSERT INTO Products (productname, price, stock, comment, detail, imgdata, createdate, lastupdate)" + " VALUES(@productname, @price, @stock, @comment, @detail, @imgdata, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)", sqlconn); // パラメータを設定する sqlcmd.Parameters.Add("@productname", SqlDbType.NVarChar, 64).Value = productname; sqlcmd.Parameters.Add("@price", SqlDbType.Money).Value = price; sqlcmd.Parameters.Add("@stock", SqlDbType.Int).Value = stocknum; sqlcmd.Parameters.Add("@comment", SqlDbType.NVarChar, 256).Value = comment; sqlcmd.Parameters.Add("@detail", SqlDbType.NVarChar, 2048).Value = detail; // 画像の処理 // アップロードされた画像を読み込む HttpPostedFile postedfile = Request.Files["ImgFile"]; if ((postedfile == null) || (postedfile.ContentLength == 0)) { // 何も送信されていない // DBNullを設定 sqlcmd.Parameters.Add("@imgdata", SqlDbType.Image).Value = DBNull.Value; } else { // 画像として読み込む // アップロードされた画像がJPEG形式かどうかを調べる string contenttype = postedfile.ContentType.ToLower(); if (contenttype != "image/jpeg" && contenttype != "image/pjpeg") { // JPEG形式ファイルではない ErrorMessage.Text = "アップロードされた画像は、JPEG形式ではありません"; return false; } // アップロードされたファイルをバイト配列として読み込む try { byte []img = new byte [postedfile.ContentLength]; postedfile.InputStream.Read(img, 0, postedfile.ContentLength); // パラメータとして設定 sqlcmd.Parameters.Add("@imgdata", SqlDbType.Image).Value = img; } catch (Exception ex) { // 何らかのエラーが発生した // ログに書き込む Response.AppendToLog(ex.Message); ErrorMessage.Text = "画像のアップロード処理に失敗しました"; return false; } } // データベースに対してレコードを追加する int recnum = -1; try { // 接続を開く sqlconn.Open(); // INSERT文を実行する recnum = sqlcmd.ExecuteNonQuery(); } catch (SqlException ex) { // 何らかのエラーが発生した // エラーをIISのログに記録しておくことにする Response.AppendToLog(ex.Message); } finally { // 接続を閉じる sqlconn.Close(); } if (recnum == 1) { // 更新に成功した return true; } else { // 更新に失敗した ErrorMessage.Text = "データベースへの書き込みに失敗しました"; return false; } }