質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

2回答

1090閲覧

ASP.NET 現在日時のデータベース登録

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2022/09/01 04:57

前提

ASP.NET MVCを使用しています。
https://qiita.com/ryo19841204/items/fdd3bee30461074eee64
こちらのサイトを参考にデータベース接続をしました。

新規登録の画面で現在日時をSQLに登録できるようにしたいです。

実現したいこと

  • 登録ボタンを押すとSQLTourokuDataに現在日時が登録できるようにしたいです

発生している問題・エラーメッセージ

現在日時の取得はViewでできていますが登録ができないです。
下記は現在日時の取得と表示です。

@{ ViewBag.Date = DateTime.Now; } @ViewBag.Date

該当のソースコード

新規登録画面のView

HTML

1 <div class="form-group"> 2 @Html.LabelFor(model => model.TourokuData, htmlAttributes: new { @class = "control-label col-md-2" }) 3 <div class="col-md-10"> 4 @{ 5 ViewBag.Date = DateTime.Now; 6 } 7 @ViewBag.Date 8 9 @Html.EditorFor(model => model.TourokuData, new { htmlAttributes = new { @class = "form-control" } }) 10 @Html.ValidationMessageFor(model => model.TourokuData, "", new { @class = "text-danger" }) 11 </div> 12 </div> 13

Controller(登録画面のみ抜粋)

/// <summary> /// 新規登録処理 /// </summary> /// <returns></returns> /// public ActionResult newregistration() { FormsAuthentication.SignOut(); return RedirectToAction("About", "Bihin"); } /// <summary> /// 登録 /// </summary> /// <returns></returns> public ActionResult registration() { FormsAuthentication.SignOut(); return RedirectToAction("Index", "Bihin"); }

Model(TourokuDataのみ抜粋)

public string TourokuData { get; set; }

試したこと

現在日時の取得を行いました。

補足情報(FW/ツールのバージョンなど)

ASP.NET MVC 
Windows 10 Pro,
Visual Studio2022 Version 17.3.2
.NET framework 4.7.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/09/01 05:41

また人のアドバイスか聞かないで自己流で自己解決するのかな?
guest

回答2

0

△△△△△△△△△△△△△△

投稿2022/09/01 11:09

MM_LL

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

テーブル定義でデフォルト値をシステム日時にしておけば、登録時に現在日時になりますし、設定次第では更新時にも現在日時に更新されます。
つまり、テーブルのカラム定義だけで済む話です。
アプリケーション側からすることはないです。
https://dev.mysql.com/doc/refman/5.6/ja/timestamp-initialization.html

投稿2022/09/01 05:28

編集2022/09/01 05:30
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/09/01 05:44

回答ありがとうございます。 つまりSQLテーブルを作るときに現在日時を自動的に登録できる設定があるということですか??
m.ts10806

2022/09/01 06:08

>SQLテーブルを作るときに現在日時を自動的に登録できる設定がある 回答にリンクを提示しています。
退会済みユーザー

退会済みユーザー

2022/09/01 06:58

送っていただいたリンク拝見しました。 試しに CREATE TABLE t1 ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); こちらをかいて実行してみたのですが”ON”付近に不適切なキーワードがあると出てしまいます。
m.ts10806

2022/09/01 07:03

どこにどう書いて実行したのか記載されないと何とも言えません。 こちらの手元のMySQLにテストとして作ったDBに対して同じCREATE文実行したらきちんと成功して 記載通りのテーブルとカラムが出来上がりました。
m.ts10806

2022/09/01 07:04

そもそも、今回の対応をするのでしたら、 既に作ってしまったテーブル・カラムに対して設定を追加することになるので CREATEではなくalter table のmodifyだと思います。 どのようにテーブルを作ったかによって変わりますが(GUIツール使って作ったのでしたらSQL実行することなく画面操作で変更できるはずです)
退会済みユーザー

退会済みユーザー

2022/09/01 07:14

今使用しているテーブルは create table [dbo].[備品マスタ] ( [BuppinName] nvarchar(50) not null , [Suuryou] int , [Isogi] int , [Bikou] varchar(50) , [Tourokusya] nchar(10) , [TourokuData] date , primary key (BuppinName) ); こちらです。 CREATE TABLE 備品マスタ ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); とかいて実行しました。ts dtのところは列名ですか??今はTourokuDataを更新したいので変えなければなりませんか?
退会済みユーザー

退会済みユーザー

2022/09/01 07:15

>CREATEではなくalter table のmodifyだと思います。 こちらも調べてみようとおもいます。
m.ts10806

2022/09/01 07:16

どこにどう書いて実行したのか記載されないと何とも言えません。
退会済みユーザー

退会済みユーザー

2022/09/01 07:18

手元のMySQLにテストとして作った備品マスタに対して CREATE TABLE 備品マスタ ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); こういう風に書きました。
m.ts10806

2022/09/01 07:20

>ts dtのところは列名ですか? 以前の質問にて https://teratail.com/questions/fr6qlztik2ujkv 「基本的なことは理解しているつもり」と仰っていましたが、 その質問が出るということは基本はまだ全然だと思います。 本当に理解できているのでしたら、私の回答を読んだだけで対応可能です。 そのような設定を知らないというのはあり得るから。ただ、基本を理解している人がDB側でできることを調べようとしないというのは矛盾します。 実装だけで何とかしようとするのはコードが汚くなるだけで遠回りですし、 フレームワークの思想にも外れるのではないでしょうか。 .NETフレームワークは歴史も古く非常に優秀なフレームワークだと思いますし、 設計さえきちんとしていたら言うほど実装に迷うことってないと思うのですが・・・ 行き当たりばったりでやりたいことはできませんよ。
m.ts10806

2022/09/01 07:22

「どこにどう書いて実行したのか」が全く言及されていません。 そのSQLはどこでどう実行したのですか? 何かのツールを使ったのか、DBに直接ログインしたのか、はたまた別の方法か。 DBを操作する方法はそれこそ無数にあると言ってもいいので、 自身の環境含めて具体的に記載しないと他者には伝わりません。 あくまで赤の他人であって、上司や先輩などそこにいる人ではないですから。
退会済みユーザー

退会済みユーザー

2022/09/01 07:23

確認したかっただけですすみません。
退会済みユーザー

退会済みユーザー

2022/09/01 07:25

A5SQL内で白紙の状態から CREATE TABLE 備品マスタ ( ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); このようにかいて、右クリック 実行で実行しました
退会済みユーザー

退会済みユーザー

2022/09/01 07:26

そもそも更新したいデータの型をTIMESTAMP型にすればよいということですか?
m.ts10806

2022/09/01 07:30 編集

>更新したいデータの型をTIMESTAMP型にすればよいということですか? そもそもなぜ「現在日時を登録」という要件なのにTIMESTAMPにしてないんでしょうか。
退会済みユーザー

退会済みユーザー

2022/09/01 07:33

Dataにしていました、、
m.ts10806

2022/09/01 07:34

Dataという型はないです。 細かいですが1字違うと動かないのがプログラムです。 同じく1字違うと他者には全く違った情報として伝わります。会話が成り立たないということです。
m.ts10806

2022/09/01 07:36

ひとまず根本的な解決策としては「行き当たりばったりをやめて設計からやり直す」です。 ないなら作る。 DBを使うアプリケーションでテーブル定義からなってないのはコード書いてはいけない段階です。 基本設計ですから。 「日時」と「日付」では違います。 「文章」で間違いなく「要件」を「定義」するところから始めてください。 でないと赤の他人である我々には手が出せません。
退会済みユーザー

退会済みユーザー

2022/09/01 07:38

>Dataという型はないです 打ち間違いました。Dateでした。
退会済みユーザー

退会済みユーザー

2022/09/01 07:40

現在日付を取得したいです。
m.ts10806

2022/09/01 07:43

要件変わってますね。 登録したいのか取得したいのか。 DBに登録しないと取得できないから登録が先でしょうけど、 やはりいずれにしても(以下、2022/09/01 16:36のコメント繰り返し)
退会済みユーザー

退会済みユーザー

2022/09/01 07:45

登録でしたねすみません。
退会済みユーザー

退会済みユーザー

2022/09/01 07:48

周りに頼る人もいなくて、何も分からないまま質問してしまいました。すみませんでした。何を勉強したらどこで生かせるのかも分からず、行き当たりばったりで解決することしかできていません。申し訳ございません。
m.ts10806

2022/09/01 08:00

--ここから要件定義 ①「文章」で間違いなく「要件」を「定義」する。画面があるなら簡易に画面遷移図なども作る --ここまでが要件定義 --ここから基本設計 ②画面があるならその画面を定義に基づいて作成する ③画面は機能なので、②で機能が決まる。どういう操作でどういう動きになるのか文章にする ④要件・画面を満たすために必要な「項目」を書き出して各項目の型を決める ⑤上記④で書き出した項目をテーブル定義として資料にまとめる ⑥環境要件、DB、バージョン、フレームワークなども定義する(場合により検証工程もはさむ) --ここまでが基本設計 --ここから詳細設計 ⑥これまで作った資料を元に実装に近いレベルで「文章で」機能の仕様、処理を記載していく(各機能とテーブル・項目がどう関係するのかも記載する --ここまでが詳細設計 --ここから製造 ⑦⑥で作った設計書に基づき、実装する --ここまでが製造 --以下テスト工程(テスト仕様書は作る) 要件が定義できていないから言葉が曖昧になり 言葉が曖昧になるから設計が曖昧になり 設計が曖昧だから実装が曖昧になります 全部が曖昧な状態=行き当たりばったり 「ここだけ解決したい」では成り立たないので、 やはり要件定義から確実にやっていくべきでしょう。 「やりたいことを文章にする」作業。 練習や課題のためにやっているのでしたらもう少しやりようはありますが、 それにしては基礎的なところ、入門的なところが抜けすぎてると思います。 やりたいことを実現するためには相応以上の基礎が必要です。 入門書を丁寧に辿る(できれば2週以上、2週目からは観点を変える、上げる)だけでも全然違います。
m.ts10806

2022/09/01 08:00

はて、なぜ解決になったか分からない。
退会済みユーザー

退会済みユーザー

2022/09/01 08:01

ありがとうございます。
退会済みユーザー

退会済みユーザー

2022/09/01 08:02

一旦保留したい場合はそのまま放置で大丈夫なのですか??
m.ts10806

2022/09/01 08:04 編集

何をもって「大丈夫」とするのか基準が全く分からないですが(そういうところから意識してください) 「解決してないのに解決にされる」気持ち悪さのほうが回答者としては上回ります。 もちろん、なぜ保留するのか、どうなったら解決とするのかをきちんと述べてもらえるのがありがたいですけどね(ほとんどそういうことはないです。お客様気質の質問者のほうが多いので)
退会済みユーザー

退会済みユーザー

2022/09/01 08:08

基本的な考え方や知識が足りていないと思ったので、学習してから質問しなおしたいと思います。一旦保留致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問