Размер видео: 1280 X 720853 X 480640 X 360
Показать панель управления
Автовоспроизведение
Автоповтор
これをタダで見れるなんて、凄いサービス。おかげで、データベースを使ったWEBアプリの構築がよく分かりました。
コメントありがとうございました!webアプリ+DB連携の理解が深まったようで良かったです。実は、これはリアルのセミナーだと数十万円するような内容です。僕もRUclipsでいろいろ勉強させてもらってるので、自分にできることで還元できたらなって思ってます!
はきはきと喋られている明るい雰囲気なので学ぶ元気がもらえます。他のチャンネルにはない良さだと思います。
ありがとうございます!僕もみなさんのコメントから元気をもらってます😄
見終わったー相変わらず完璧な教え方ですありがとうございます!ここ1週間くらいずっとせかチャンの動画見てましたこの動画もまた見返しますだいぶ知識ついたのでwebアプリ色々と作ってみます!また今度知りたい分野の講座が登場したら見ます!
うちゃさん、コメントありがとうございました!1週間でDB編まで見られちゃうなんてスゴイですね。かなりの知識をインプットできたと思うので、次はアウトプットできるレベルを目指しましょう!ぜひいろんなプログラムを作ってみてください!
Java silver受験に向けて勉強に取り組み始めましたが、もう悲しいくらいに無知識で、、、意気込んで試験勉強3ヶ月で受ける!と決めていたのに、、その月が2月ですが、正答率半分もいかず。。。せかちゃんみてがんばろうとおもいます。😢✨
S Tさん、コメントありがとうございました!JavaSilverって結構マニアックな内容が出てきますからね。勉強3ヶ月目で正答率が半分いっていなくても、全然気にする必要はないと思います👍むしろ、JavaSilverにチャレンジしようと覚悟を決めたこと。そして、2ヶ月以上も頑張って勉強を続けてきたこと。これだけでも十分胸を張って良いことですよ!近日中に「Javaの効率的な勉強方法」や「プログラミング学習につまづいたときの対策」の動画を出します。きっと参考になると思うので、そちらもぜひ見てみてください!
せかチャン 菅原さんの説明が、有料教材よりも優しくて分かりやすいと感じているので、せかチャンを優先して観ています(笑)Javaシリーズは、【Javaの始め方】から全部2回ずつ視聴していますが、やっぱり後半になるほど難しく、理解が追い付かないところもでてきています(私としてはポリフォーリズムのあたりから頭がオーバーヒートし始めました(笑))ただ、とっても丁寧に説明してくださってるのは伝わってますので、繰り返し復習していくことで少しずつ自分の物にしていければいいな、と思います。配信、感謝します!ありがとうございます!
柏木さん、コメントありがとうございました!もうデータベース編の動画まで見てくれたんですね。しかも全部2回ずつなんてすごく速い!そうやって全体の動画を繰り返し見てもらうと全体像を把握しながら理解を深めていけるので、とても良い勉強方法だなぁと感じました😄ポリモフィズムも含めて最初は難しいって感じる内容も多いと思いますが、少しずつ「分かった!」と思える部分を増やしていってもらえたら嬉しいです。
見たかったやつや😂
ここまで深堀りしてる動画はなかなかないので、ぜひ活用してください😄
この動画明日までに見終える🔥まだ始まって10分くらいだけど、2回見直しつつ自分でも図解書いてみたら理解度が凄い、、!
blackbirdさん、コメントありがとうございました!データベース編の動画をすべて理解できれば、相当な実力がつくと思いますよ👍ぜひ頑張ってください!
なるほどDBでも最初にクラスを宣言して処理ごとにインスタンス化するみたいなことができるんですね賢い…
入門講座6章で解説したクラスライブラリと同じように、DB関連の処理が用途ごとにクラス別にまとめられているイメージですね。
いつもわかりやすい解説動画ありがとうございます。先日Java silverに合格し、今度はSilver SQLの資格取得を頑張っているのですが、今後解説動画を出す予定はありますか??
いつも動画を見てくれてありがとうございます!また、Java Silver合格おめでとうございます。さらにSilver SQLも狙ってるんですね。ぜひ頑張ってください!SQLはそれほどリクエストが多くない分野なので、今のところ解説動画を出す予定はないですね。
分かりやすい説明ありがとうございます。 質問ですが、「webアプリでDB更新」を自分なりに書き換えて動かして見たのですが、追加をしてもmysqlに追加されません。DB内にコマンドプロンプトから入力したものはブラウザの「表示」で確認できます。考えられる原因はどこでしょうか?個人的には、public int insertが怪しいと思ってます。また、すべて文字列で受け取っている場合、書き方はString sql = "INSERT INTO student VALUES( ' " + no + " ' , ' " + name + " ' , ' " + score + " ' ) " ;であってますか?※「no」や「name」等はHTMLに入力した値はmsgで表示できました。初歩的な質問だと思いますがご教授いただければ幸いです。
ほとくれないさん、コメントありがとうございました。そういう「コンパイルは通るけど実行してもうまくいかない」ときって、結構バグ取りが難しいんですよね💦DB処理がうまくいかないときは、System.out.println( sql ) などで実行しているSQL文そのものを出力すると間違いに気づけることが多いです。ちなみに、そのSQL文だと no と score を '~' で囲んでしまっているため、文字列として追加しようとしてしまいます。配布のサンプルプログラムも参考にしてもらって、no や score を囲んでいる ' を除いてみてください。
DTOとentityの動画内についてご質問です。jsp内の17から19行目でsdtoのgetメソッドにてリスト内の情報をstudentbeanのsbに格納していますが、このsbのインスタンス生成はいらないのでしょうか。ご教示お願いいたします。
大谷友亮さん、コメントありがとうございました。StudentBeanのインスタンスはDAOで生成されて、DTOに格納されています。JSPではそのDTOをリクエストスコープから取り出して使っているので、ここで新しくインスタンスを生成しなくても大丈夫ですね。
なるほど!ありがとうございます。追加で質問です。DTOとentityの動画内についてご質問です。ShowStudentServletクラスで全件検索した結果のsdaoをsdtoに格納していますが、sdtoのインスタの生成は不要なのでしょうか。ご教示お願いいたします。
配信ありがとうございます。今回DBと接続するのにDriverManegerが使われていると思います。私がみている参考書ではDataSourceが出てきます。違いや、使う場面などあれば教えてください。
abcdefghitoshiさん、コメントありがとうございました!DriverManegerとDataSourceは、両方ともDBに接続する機能をもつものですね。DBへの接続情報をコード内に書く(DriverManeger)か、別のところに登録しておく(DataSource)かで違いがあります。詳しくはこの動画やその参考書を見てみてください😄
楽しく拝見しております。DBの更新処理についてはSQLインジェクションが発生する可能性がありそうですがPreparedStatementを使った方式のほうが良いのではないでしょうか
ちもね*さん、コメントありがとうございました!その通りですね。SQLインジェクションの可能性を考えると、PreparedStatementの方が適切だと思います。webアプリは他にもセキュリティの脆弱性があるため、どこかのタイミングでwebセキュリティに関するプログラミングの解説動画を作れたら良いなと考えています😄
いつもわかりやすい説明ありがとうございます。サンプルプログラムをダウンロードして動作を確認することができて非常に有効な動画だと思いました。一つ質問なんですが、StudentDTOのclassファイルは問題と思いますが、ソースをコンパイルするとStudentBeanの部分がすべて「エラー: シンボルを見つけられません」となってしまって、いろいろと試していますがどうにも解決できません(ほかのjavaソースはすべてコンパイルOKでした)。importすべきものもないようだし、スペルも間違っていないようなのですが、何か心当たりがあればご教示願います。
いつも動画を見てくれてありがとうございます!直接的な理由は分かりませんが、パッケージ化したクラスをコンパイラが見つけられていないようですね。念のため一度作ったclassファイルはすべて削除してもらって‥・*.java でコンパイルする方法とjavaファイルを1つひとつコンパイルする方法を両方試す・呼び出される側のクラスから順番にコンパイルする・javaファイルとclassファイルの配置を変えてコンパイルするこのあたりを意識してみてもらえたらと思います。
@@SekaChan *.java でコンパイルする方法で実施したら「エラー: クラス StudentDTOはpublicであり、ファイルStudentDTO.javaで宣言する必要があります、」という基本レベルのメッセージに変わりました。ファイル名とクラス名は同じに見えましたが、参照系の動画からコピーした同じ処理内容のStudentDTOで実施したところコンパイルは問題なく実施できました。*javaでコンパイルすると問題なくクラスができたのに、javaファイルを1つひとつ実施すると事象が変わらないです。コンパイルは呼び出される側から(StudentBean -> StudentDTOの順番で実施)。とりあえずclassができたので一安心です。ありがとうございました。
配信ありがとうございます。MySQLを動画通りにダウンロードすると途中でVisual Studioのインストールが必要と出てきて作業が進められません。この場合、Visual Studioをダウンロードするべきなのでしょうか?
cream iceさん、コメントありがとうございました!僕の環境にはVisual Studioはインストールされてないですね。Visual Studioや関連機能を使わないのであれば、ダウンロードしなくても大丈夫かなと思います😄
返信ありがとうございます。再度MySQLをインストールしてみると、Documentationとsample以外ダウンロードできず、Serverの設定でエラーが出てきました。この場合、VIsual Studio 2019を入れてみたほうがいいですか?他にも方法がありますか?
もう少しで終わるところだったんですが、DAOのところで、ShowNameServlet2.javaをコンパイルしてみると下記のシンボルだけエラーになってしまいます。シンボル: クラス StudentDAO場所: クラス ShowNameServlet2ShowNameServlet2.java:11: エラー: シンボルを見つけられませんStudentDAO sdao = new StudentDAO();
解決しました。すみませんでした。tomcat10にしたので、-classpathをつけてたんですが、StudentDAOも-classpathで指定してたところから探しているらしく、-sourcepathでファイルのある場所を指定しないと駄目でした。javac ShowNameServlet2.java -classpath C:\apache-tomcat-10.1.19\lib/servlet-api.jar -sourcepath C:\apache-tomcat-10.1.19\webapps\dbweb\WEB-INF\classes
基本的な質問かもしれませんが、StudentDA03で下記の部分のシングルコーテーション" ' " がないと確かにデータを拾いませんが、この" ' "はエスケープ文字でもなさそうですが、どのような機能なのでしょうか?お手数ですがご教示願います。 public int insert(int no, String name, int score) { String sql = "INSERT INTO student VALUES ("+ no + ", '" + name + "', " + score1 + ","+ score2 + "," + score3 + ")";
コメントありがとうございました。「'」はSQL文で文字列を囲むときの記号ですね。例えば 45:36 からINSERT文の例として> INSERT INTO student VALUES(1, '菅原', 80)を紹介しましたが、「菅原」を囲んでいる「'」のことです。
ご回答ありがとうございます。細かい部分の質問にも答えていただいて本当に助かりました。
すみません、この動画を見て作ろうとしたんですが、8.0.35では少しセットアップの手順が変わっていたので、説明動画のアップをお願いします。
燈雄榮さん、コメントありがとうございました。この前のeclipseのときと同じような回答になってしまい申し訳ないですが、旧バージョンの動画しか作れていないのは不親切だと感じつつも、最新バージョンの動画を作り続けることが難しい部分もあります。今のところ最新バージョンの説明動画を撮る予定はないため、動画と同じバージョンのインストーラをダウンロード(Archiveからダウンロード可能です)して使ってもらうか、最新バージョンをインストールしたい場合は他の方の動画やwebサイトを参考にしてもらえたらと思います。
非常にわかりやすい解説ありがとうございます!初歩的な質問になってしまい申し訳ないのですが、APサーバとDBサーバの接続をしなくてもDriverManagerでDB接続ができるのでしょうか?
山田太郎さん、コメントありがとうございました!「APサーバとDBサーバの接続」が(いろんな意味にとらえられる表現なので)具体的にどんなことを指しているのか分からないですが、この講座ではAPサーバにDBサーバとの接続情報を持たせるようなことはしていないですね。
菅原先生、いつもありがとうございます。「WebアプリとDB連携」のsampleプログラム(先生と同じソースコード)をEclipseで実行したら、「noが1の生徒名はnullです」と表示してしまい、どう解決すれば良いでしょうか?お忙しいところ恐縮ですが、宜しくお願い申し上げます。
P Sさん、コメントありがとうございました!生徒名がnullになってしまうのはよくもらう質問なんですが、原因がいろいろあり得るので特定が難しいんですよね💦公開しているサンプルプログラムをそのまま動かしているのならDB側に原因がありそうですし、自分でプログラムを作ったのならプログラム側に原因(特に多いのはSQL文の誤り)があるのかもしれません。ちなみに1ヶ月前に同じ質問をしてくれた方は、もう一度最初からやってみたら正しく実行できたみたいですね。
菅原先生、いつもお世話になっております。nullの原因分析して頂き、どうもありがとうございました。以前の動画のサンプルプログラム(普通のjavaプロジェクト)を作った時、ちゃんとMySQLと接続し、データを取ってくれましたが、今回の動的プロジェクトを作ったら、nullになってしまいました。原因がよくわからないですが、今のMySQLの代わりにXAMPPで試したいかなと思います。お忙しい最中、ご返信頂き、どうもありがとうございました。
いつもとても分かり易い解説ありがとうございます。最後のサンプルプログラムを実装し実行すると、java.lang.NullPointerExceptionが出ます。EditStudentServlet.java のString btn = req.getParameter("btn"); でbtnの値を取得すると思うのですが、btnの値がnullになっていまして(コンソール出力で確認)、その後の if(btn.equals("追加")){ ・・・ のところで、参照値がnullのオブジェクトに対してメソッドを呼び出そうとしてjava.lang.NullPointerException が出ていると思うのですが、なぜ、btnの値がnullになってしまうのでしょうか?環境は、Eclipseです。ご教示頂けますと嬉しいです。よろしくお願い申し上げます。
HTMLファイルののvalue属性『追加』を『add』のように英語に(他の3つのボタンも)変更したら上手くいきました。文字コードの問題かと思いました。。。がそんなことはないはずと、再度、value属性『add』を『追加』へ変更したら、その後はエラーが出なくなりました。。。そんなことってあるのでしょうか?・・・
うらきこージィさん、コメントありがとうございました!タグのname属性は正しくbtnになっていますし、文字コードに問題があるというのもたしかに考えにくいです。何より、「追加」に戻した後にエラーが出なくなったというのが妙な動きですよね🤔属性値を指定する「"」を全角で一度保存しちゃって、そのキャッシュがどこかに残ってた?というのも考えてみましたが、可能性として低そうな気もします。明確な回答ができずに申し訳ありませんが、ちょっとこの文面だけだと原因がつかめないですね‥もしまた同じようなことが起こったら、タグでmethod="GET"を指定してみてください。ブラウザのアドレスバーにパラメータ情報が表示されるので、実際に送られている文字列を確認できます(日本語は化けてしまいますが)。
配信ありがとうございます!勉強させていただいております!板書、動画編集など・・・丁寧でとても見やすいです。このチャンネルは、いい意味で教えたくないチャンネルの1つです(^O^)/これからもよろしくお願いいたします😊
kp KP&さん、コメントありがとうございました!板書や動画編集は「分かりやすさ」につながればと丁寧にやっているので、そう感じてもらえて良かったです!せかチャンは動画を見てくれる視聴者さんがいるおかげで続けられているので、このチャンネルのこと、もし良かったら周りに教えてあげてください😄
直接本動画のソースではありませんが、今回2度目の質問になります。以下の記述後、excuteUpdateでsqlを実行するのですが、String sql = "INSERT INTO testtable(id,name,price) " + "VALUES('" + id + "','" +name + "'," + price + ")";確かに正しく実行されるのですが、この指定( '"" + 変数 + "')の意味がいろいろ調べてもわからず閉口しています。何かヒントになることがあればご教示願えないでしょうか?
動画外のソースなので詳細は省きますが、一般的に変数の値について疑問を感じたときは、その値を出力してみると意味を理解しやすいケースが多いですね。この場合も System.out.println( sql ) で出力してみると、' や " の意味合いが分かりやすいですよ。(また、この記述は動画内で解説した気がするので必要であれば探してみてください)
JavaDB12にありました。引数で渡された文字列を+で連結してsql文を作成しているんですね。System.out.printlnにslqを参照すべきでした。それぞれの変数を指定して確認していたので解決に至りませんでした。適切なアドバイスありがとうございました。
お世話になっております。「MySQL」をインストールしている際に Windows(x86,32-bit),MSI Installer 8.0.32 2.4Mを選択しますとその先の画面の内容がここで説明されているのとはちがってまして、そのままま続けて良いかわからないなりインストールを中止しました。ダウンロードする容量も2.4Mと少なくて、後続の画面で表示されるソフトの数も少ないです。よろしくお願いいたします。
半澤博さん、コメントありがとうございました。確認したところ、インストーラのバージョンが8.0.32に上がったみたいですね。マイナーチェンジなのでMySQLのコアとなる部分を同じようにインストール・設定できれば大丈夫かなと思いますが、どうしても不安という場合は、画面上のタブ「Archives」から動画と同じバージョン(8.0.31)をダウンロードすることも可能です👍
@@SekaChan コメント頂きありがとうございます。「Archives」から同じバージョンをダウンロードすることにいたします。
表示される名前がnullになる場合どうしたらいいですか?
名前として表示されるはずのデータが、どこかでうまく渡されていないのだと思います。どのサンプルで名前がnullになってしまうのかが分からないので具体的なことはいえませんが、HTML→JavaやDB→Javaなどデータの受け渡し部分を確認してみてください。
仕事が早いですね笑
次の講座決まっているのでしょうか??😊
さんかめはめさん、コメントありがとうございました!JavaDB講座は前後のつながりが濃いので総集編動画の方が勉強しやすいかなと思い、このタイミングのアップになりました😄次の講座はもう撮り始めていますが、いつスタートするかは未定ですね。
@@SekaChan ありがとうございます!助かります!楽しみです!!
すみませんConnectionとStatementはオブジェクトではなくクラスではないんですか?
iis zjakさん、コメントありがとうございました。厳密にいうと、ConnectionとStatementはインタフェースですね。getConnection()やcreateStatement()では、これらのインタフェースを実装したクラスのオブジェクトを取得しています😄
1:00:34 mysql> use sampledb;Database changedmysql> source where.sql;ERROR:Failed to open file 'where.sql', error: 2エラーが出るのですが、解決ができません。調べまくっても、直接URL指定しようにも、どこにフォルダがあるのかもわかりませんし・・・。mysqlのフォルダに入ってないんですよねぇ・・・。sampledb。それ以降は問題なくできました。
神集場出雲_ZooBeeさん、コメントありがとうございました。「where.sqlを開けない」というエラーなので、mysqlコマンドを実行する際のカレントディレクトリ(動画では C:\Java )内にファイルがあることを確認してみてください。sampledbのほうは問題なさそうな気がします😄
1:09:35
ありがとうございます!いつも楽しく視聴させていただいてます!一点質問があります。StudentDTO.javaで以下の書き方が出てきますが、最初のStudentBeanは引数の型、次のStudentBeanは戻り値の型であってますでしょうか。メソッドの定義をしている箇所なのかと思いますが、この記述が見慣れず、それぞれどういう構造なのかわかってないかもしれないです、、よろしくお願いします。 public void add(StudentBean sb){ list.add(sb); } public StudentBean get(int i){ return list.get(i); }
Pon Ponさん、コメントありがとうございました。いつも動画を見てくれてありがとうございます!StudentBeanについては、その認識(引数の型と戻り値の型)で合ってますよ👍もしメソッドの定義方法に不安な部分があれば、こちらの動画を見てもらうと理解が深まるかなと思います。●【Java入門講座】3-2 設計図クラスruclips.net/video/jSk1CzTdp-Q/видео.html
これをタダで見れるなんて、凄いサービス。おかげで、データベースを使ったWEBアプリの構築がよく分かりました。
コメントありがとうございました!
webアプリ+DB連携の理解が深まったようで良かったです。
実は、これはリアルのセミナーだと数十万円するような内容です。
僕もRUclipsでいろいろ勉強させてもらってるので、自分にできることで還元できたらなって思ってます!
はきはきと喋られている明るい雰囲気なので学ぶ元気がもらえます。他のチャンネルにはない良さだと思います。
ありがとうございます!
僕もみなさんのコメントから元気をもらってます😄
見終わったー相変わらず完璧な教え方ですありがとうございます!
ここ1週間くらいずっとせかチャンの動画見てましたこの動画もまた見返します
だいぶ知識ついたのでwebアプリ色々と作ってみます!
また今度知りたい分野の講座が登場したら見ます!
うちゃさん、コメントありがとうございました!
1週間でDB編まで見られちゃうなんてスゴイですね。
かなりの知識をインプットできたと思うので、次はアウトプットできるレベルを目指しましょう!
ぜひいろんなプログラムを作ってみてください!
Java silver受験に向けて勉強に取り組み始めましたが、もう悲しいくらいに無知識で、、、意気込んで試験勉強3ヶ月で受ける!と決めていたのに、、その月が2月ですが、正答率半分もいかず。。。せかちゃんみてがんばろうとおもいます。😢✨
S Tさん、コメントありがとうございました!
JavaSilverって結構マニアックな内容が出てきますからね。
勉強3ヶ月目で正答率が半分いっていなくても、全然気にする必要はないと思います👍
むしろ、JavaSilverにチャレンジしようと覚悟を決めたこと。
そして、2ヶ月以上も頑張って勉強を続けてきたこと。
これだけでも十分胸を張って良いことですよ!
近日中に「Javaの効率的な勉強方法」や「プログラミング学習につまづいたときの対策」の動画を出します。
きっと参考になると思うので、そちらもぜひ見てみてください!
せかチャン 菅原さんの説明が、有料教材よりも優しくて分かりやすいと感じているので、せかチャンを優先して観ています(笑)Javaシリーズは、【Javaの始め方】から全部2回ずつ視聴していますが、やっぱり後半になるほど難しく、理解が追い付かないところもでてきています(私としてはポリフォーリズムのあたりから頭がオーバーヒートし始めました(笑))ただ、とっても丁寧に説明してくださってるのは伝わってますので、繰り返し復習していくことで少しずつ自分の物にしていければいいな、と思います。配信、感謝します!ありがとうございます!
柏木さん、コメントありがとうございました!
もうデータベース編の動画まで見てくれたんですね。しかも全部2回ずつなんてすごく速い!
そうやって全体の動画を繰り返し見てもらうと全体像を把握しながら理解を深めていけるので、とても良い勉強方法だなぁと感じました😄
ポリモフィズムも含めて最初は難しいって感じる内容も多いと思いますが、少しずつ「分かった!」と思える部分を増やしていってもらえたら嬉しいです。
見たかったやつや😂
ここまで深堀りしてる動画はなかなかないので、ぜひ活用してください😄
この動画明日までに見終える🔥まだ始まって10分くらいだけど、2回見直しつつ自分でも図解書いてみたら理解度が凄い、、!
blackbirdさん、コメントありがとうございました!
データベース編の動画をすべて理解できれば、相当な実力がつくと思いますよ👍
ぜひ頑張ってください!
なるほど
DBでも最初にクラスを宣言して処理ごとにインスタンス化するみたいなことができるんですね
賢い…
入門講座6章で解説したクラスライブラリと同じように、DB関連の処理が用途ごとにクラス別にまとめられているイメージですね。
いつもわかりやすい解説動画ありがとうございます。
先日Java silverに合格し、今度はSilver SQLの資格取得を頑張っているのですが、今後解説動画を出す予定はありますか??
いつも動画を見てくれてありがとうございます!
また、Java Silver合格おめでとうございます。さらにSilver SQLも狙ってるんですね。ぜひ頑張ってください!
SQLはそれほどリクエストが多くない分野なので、今のところ解説動画を出す予定はないですね。
分かりやすい説明ありがとうございます。 質問ですが、
「webアプリでDB更新」を自分なりに書き換えて動かして見たのですが、追加をしてもmysqlに追加されません。
DB内にコマンドプロンプトから入力したものはブラウザの「表示」で確認できます。
考えられる原因はどこでしょうか?
個人的には、public int insertが怪しいと思ってます。
また、すべて文字列で受け取っている場合、書き方は
String sql = "INSERT INTO student VALUES( ' " + no + " ' , ' " + name + " ' , ' " + score + " ' ) " ;
であってますか?
※「no」や「name」等はHTMLに入力した値はmsgで表示できました。
初歩的な質問だと思いますがご教授いただければ幸いです。
ほとくれないさん、コメントありがとうございました。
そういう「コンパイルは通るけど実行してもうまくいかない」ときって、結構バグ取りが難しいんですよね💦
DB処理がうまくいかないときは、System.out.println( sql ) などで実行しているSQL文そのものを出力すると間違いに気づけることが多いです。
ちなみに、そのSQL文だと no と score を '~' で囲んでしまっているため、文字列として追加しようとしてしまいます。
配布のサンプルプログラムも参考にしてもらって、no や score を囲んでいる ' を除いてみてください。
DTOとentityの動画内についてご質問です。
jsp内の17から19行目でsdtoのgetメソッドにてリスト内の情報をstudentbeanのsbに格納していますが、このsbのインスタンス生成はいらないのでしょうか。
ご教示お願いいたします。
大谷友亮さん、コメントありがとうございました。
StudentBeanのインスタンスはDAOで生成されて、DTOに格納されています。
JSPではそのDTOをリクエストスコープから取り出して使っているので、ここで新しくインスタンスを生成しなくても大丈夫ですね。
なるほど!ありがとうございます。
追加で質問です。
DTOとentityの動画内についてご質問です。
ShowStudentServletクラスで全件検索した結果のsdaoをsdtoに格納していますが、sdtoのインスタの生成は不要なのでしょうか。
ご教示お願いいたします。
配信ありがとうございます。
今回DBと接続するのにDriverManegerが使われていると思います。私がみている参考書ではDataSourceが出てきます。
違いや、使う場面などあれば教えてください。
abcdefghitoshiさん、コメントありがとうございました!
DriverManegerとDataSourceは、両方ともDBに接続する機能をもつものですね。
DBへの接続情報をコード内に書く(DriverManeger)か、別のところに登録しておく(DataSource)かで違いがあります。
詳しくはこの動画やその参考書を見てみてください😄
楽しく拝見しております。DBの更新処理についてはSQLインジェクションが発生する可能性がありそうですがPreparedStatementを使った方式のほうが良いのではないでしょうか
ちもね*さん、コメントありがとうございました!
その通りですね。SQLインジェクションの可能性を考えると、PreparedStatementの方が適切だと思います。
webアプリは他にもセキュリティの脆弱性があるため、どこかのタイミングでwebセキュリティに関するプログラミングの解説動画を作れたら良いなと考えています😄
いつもわかりやすい説明ありがとうございます。サンプルプログラムをダウンロードして動作を確認することができて非常に有効な動画だと思いました。一つ質問なんですが、StudentDTOのclassファイルは問題と思いますが、ソースをコンパイルするとStudentBeanの部分がすべて「エラー: シンボルを見つけられません」となってしまって、いろいろと試していますがどうにも解決できません(ほかのjavaソースはすべてコンパイルOKでした)。importすべきものもないようだし、スペルも間違っていないようなのですが、何か心当たりがあればご教示願います。
いつも動画を見てくれてありがとうございます!
直接的な理由は分かりませんが、パッケージ化したクラスをコンパイラが見つけられていないようですね。
念のため一度作ったclassファイルはすべて削除してもらって‥
・*.java でコンパイルする方法とjavaファイルを1つひとつコンパイルする方法を両方試す
・呼び出される側のクラスから順番にコンパイルする
・javaファイルとclassファイルの配置を変えてコンパイルする
このあたりを意識してみてもらえたらと思います。
@@SekaChan *.java でコンパイルする方法で実施したら「エラー: クラス StudentDTOはpublicであり、ファイルStudentDTO.javaで宣言する必要があります、」という基本レベルのメッセージに変わりました。ファイル名とクラス名は同じに見えましたが、参照系の動画からコピーした同じ処理内容のStudentDTOで実施したところコンパイルは問題なく実施できました。*javaでコンパイルすると問題なくクラスができたのに、javaファイルを1つひとつ実施すると事象が変わらないです。コンパイルは呼び出される側から(StudentBean -> StudentDTOの順番で実施)。とりあえずclassができたので一安心です。ありがとうございました。
配信ありがとうございます。MySQLを動画通りにダウンロードすると途中でVisual Studioのインストールが必要と出てきて作業が進められません。この場合、Visual Studioをダウンロードするべきなのでしょうか?
cream iceさん、コメントありがとうございました!
僕の環境にはVisual Studioはインストールされてないですね。
Visual Studioや関連機能を使わないのであれば、ダウンロードしなくても大丈夫かなと思います😄
返信ありがとうございます。
再度MySQLをインストールしてみると、Documentationとsample以外ダウンロードできず、Serverの設定でエラーが出てきました。
この場合、VIsual Studio 2019を入れてみたほうがいいですか?他にも方法がありますか?
もう少しで終わるところだったんですが、DAOのところで、ShowNameServlet2.javaをコンパイルしてみると下記のシンボルだけエラーになってしまいます。
シンボル: クラス StudentDAO
場所: クラス ShowNameServlet2
ShowNameServlet2.java:11: エラー: シンボルを見つけられません
StudentDAO sdao = new StudentDAO();
解決しました。すみませんでした。tomcat10にしたので、-classpathをつけてたんですが、StudentDAOも-classpathで指定してたところから探しているらしく、-sourcepathでファイルのある場所を指定しないと駄目でした。
javac ShowNameServlet2.java -classpath C:\apache-tomcat-10.1.19\lib/servlet-api.jar -sourcepath C:\apache-tomcat-10.1.19\webapps\dbweb\WEB-INF\classes
基本的な質問かもしれませんが、StudentDA03で
下記の部分のシングルコーテーション" ' " がないと確かにデータを拾いませんが、この" ' "はエスケープ文字でもなさそうですが、どのような機能なのでしょうか?お手数ですがご教示願います。
public int insert(int no, String name, int score) {
String sql = "INSERT INTO student VALUES ("+ no + ", '"
+ name + "', " + score1 + ","+ score2 + "," + score3 + ")";
コメントありがとうございました。
「'」はSQL文で文字列を囲むときの記号ですね。
例えば 45:36 からINSERT文の例として
> INSERT INTO student VALUES(1, '菅原', 80)
を紹介しましたが、「菅原」を囲んでいる「'」のことです。
ご回答ありがとうございます。細かい部分の質問にも答えていただいて本当に助かりました。
すみません、この動画を見て作ろうとしたんですが、8.0.35では少しセットアップの手順が変わっていたので、説明動画のアップをお願いします。
燈雄榮さん、コメントありがとうございました。
この前のeclipseのときと同じような回答になってしまい申し訳ないですが、旧バージョンの動画しか作れていないのは不親切だと感じつつも、最新バージョンの動画を作り続けることが難しい部分もあります。
今のところ最新バージョンの説明動画を撮る予定はないため、動画と同じバージョンのインストーラをダウンロード(Archiveからダウンロード可能です)して使ってもらうか、最新バージョンをインストールしたい場合は他の方の動画やwebサイトを参考にしてもらえたらと思います。
非常にわかりやすい解説ありがとうございます!
初歩的な質問になってしまい申し訳ないのですが、APサーバとDBサーバの接続をしなくてもDriverManagerでDB接続ができるのでしょうか?
山田太郎さん、コメントありがとうございました!
「APサーバとDBサーバの接続」が(いろんな意味にとらえられる表現なので)具体的にどんなことを指しているのか分からないですが、この講座ではAPサーバにDBサーバとの接続情報を持たせるようなことはしていないですね。
菅原先生、いつもありがとうございます。
「WebアプリとDB連携」のsampleプログラム(先生と同じソースコード)をEclipseで実行したら、「noが1の生徒名はnullです」と表示してしまい、どう解決すれば良いでしょうか?
お忙しいところ恐縮ですが、宜しくお願い申し上げます。
P Sさん、コメントありがとうございました!
生徒名がnullになってしまうのはよくもらう質問なんですが、原因がいろいろあり得るので特定が難しいんですよね💦
公開しているサンプルプログラムをそのまま動かしているのならDB側に原因がありそうですし、自分でプログラムを作ったのならプログラム側に原因(特に多いのはSQL文の誤り)があるのかもしれません。
ちなみに1ヶ月前に同じ質問をしてくれた方は、もう一度最初からやってみたら正しく実行できたみたいですね。
菅原先生、いつもお世話になっております。nullの原因分析して頂き、どうもありがとうございました。
以前の動画のサンプルプログラム(普通のjavaプロジェクト)を作った時、ちゃんとMySQLと接続し、データを取ってくれましたが、今回の動的プロジェクトを作ったら、nullになってしまいました。
原因がよくわからないですが、今のMySQLの代わりにXAMPPで試したいかなと思います。お忙しい最中、ご返信頂き、どうもありがとうございました。
いつもとても分かり易い解説ありがとうございます。
最後のサンプルプログラムを実装し実行すると、
java.lang.NullPointerExceptionが出ます。
EditStudentServlet.java の
String btn = req.getParameter("btn"); でbtnの値を取得すると思うのですが、
btnの値がnullになっていまして(コンソール出力で確認)、
その後の if(btn.equals("追加")){ ・・・ のところで、
参照値がnullのオブジェクトに対してメソッドを呼び出そうとして
java.lang.NullPointerException が出ていると思うのですが、
なぜ、btnの値がnullになってしまうのでしょうか?
環境は、Eclipseです。
ご教示頂けますと嬉しいです。
よろしくお願い申し上げます。
HTMLファイルの
のvalue属性『追加』を『add』のように英語に(他の3つのボタンも)変更したら
上手くいきました。
文字コードの問題かと思いました。。。がそんなことはないはずと、
再度、value属性『add』を『追加』へ変更したら、その後はエラーが出なくなりました。。。
そんなことってあるのでしょうか?・・・
うらきこージィさん、コメントありがとうございました!
タグのname属性は正しくbtnになっていますし、文字コードに問題があるというのもたしかに考えにくいです。
何より、「追加」に戻した後にエラーが出なくなったというのが妙な動きですよね🤔
属性値を指定する「"」を全角で一度保存しちゃって、そのキャッシュがどこかに残ってた?というのも考えてみましたが、可能性として低そうな気もします。
明確な回答ができずに申し訳ありませんが、ちょっとこの文面だけだと原因がつかめないですね‥
もしまた同じようなことが起こったら、タグでmethod="GET"を指定してみてください。
ブラウザのアドレスバーにパラメータ情報が表示されるので、実際に送られている文字列を確認できます(日本語は化けてしまいますが)。
配信ありがとうございます!勉強させていただいております!
板書、動画編集など・・・丁寧でとても見やすいです。
このチャンネルは、いい意味で教えたくないチャンネルの1つです(^O^)/
これからもよろしくお願いいたします😊
kp KP&さん、コメントありがとうございました!
板書や動画編集は「分かりやすさ」につながればと丁寧にやっているので、そう感じてもらえて良かったです!
せかチャンは動画を見てくれる視聴者さんがいるおかげで続けられているので、このチャンネルのこと、もし良かったら周りに教えてあげてください😄
直接本動画のソースではありませんが、今回2度目の質問になります。
以下の記述後、excuteUpdateでsqlを実行するのですが、
String sql = "INSERT INTO testtable(id,name,price) " +
"VALUES('" + id + "','" +name + "'," + price + ")";
確かに正しく実行されるのですが、この指定( '"" + 変数 + "')の意味がいろいろ調べてもわからず閉口しています。
何かヒントになることがあればご教示願えないでしょうか?
動画外のソースなので詳細は省きますが、一般的に変数の値について疑問を感じたときは、その値を出力してみると意味を理解しやすいケースが多いですね。
この場合も System.out.println( sql ) で出力してみると、' や " の意味合いが分かりやすいですよ。
(また、この記述は動画内で解説した気がするので必要であれば探してみてください)
JavaDB12にありました。引数で渡された文字列を+で連結してsql文を作成しているんですね。System.out.printlnにslqを参照すべきでした。それぞれの変数を指定して確認していたので解決に至りませんでした。適切なアドバイスありがとうございました。
お世話になっております。「MySQL」をインストールしている際に Windows(x86,32-bit),MSI Installer 8.0.32 2.4Mを選択しますとその先の画面の内容がここで説明されているのとは
ちがってまして、そのままま続けて良いかわからないなりインストールを中止しました。ダウンロードする容量も2.4Mと少なくて、後続の画面で表示されるソフトの数も少ないです。よろしくお願いいたします。
半澤博さん、コメントありがとうございました。
確認したところ、インストーラのバージョンが8.0.32に上がったみたいですね。
マイナーチェンジなのでMySQLのコアとなる部分を同じようにインストール・設定できれば大丈夫かなと思いますが、どうしても不安という場合は、画面上のタブ「Archives」から動画と同じバージョン(8.0.31)をダウンロードすることも可能です👍
@@SekaChan コメント頂きありがとうございます。「Archives」から同じバージョンを
ダウンロードすることにいたします。
表示される名前がnullになる場合どうしたらいいですか?
名前として表示されるはずのデータが、どこかでうまく渡されていないのだと思います。
どのサンプルで名前がnullになってしまうのかが分からないので具体的なことはいえませんが、HTML→JavaやDB→Javaなどデータの受け渡し部分を確認してみてください。
仕事が早いですね笑
次の講座決まっているのでしょうか??😊
さんかめはめさん、コメントありがとうございました!
JavaDB講座は前後のつながりが濃いので総集編動画の方が勉強しやすいかなと思い、このタイミングのアップになりました😄
次の講座はもう撮り始めていますが、いつスタートするかは未定ですね。
@@SekaChan ありがとうございます!
助かります!
楽しみです!!
すみませんConnectionとStatementはオブジェクトではなくクラスではないんですか?
iis zjakさん、コメントありがとうございました。
厳密にいうと、ConnectionとStatementはインタフェースですね。
getConnection()やcreateStatement()では、これらのインタフェースを実装したクラスのオブジェクトを取得しています😄
1:00:34
mysql> use sampledb;
Database changed
mysql> source where.sql;
ERROR:
Failed to open file 'where.sql', error: 2
エラーが出るのですが、解決ができません。
調べまくっても、直接URL指定しようにも、どこにフォルダがあるのかもわかりませんし・・・。
mysqlのフォルダに入ってないんですよねぇ・・・。sampledb。
それ以降は問題なくできました。
神集場出雲_ZooBeeさん、コメントありがとうございました。
「where.sqlを開けない」というエラーなので、mysqlコマンドを実行する際のカレントディレクトリ(動画では C:\Java )内にファイルがあることを確認してみてください。
sampledbのほうは問題なさそうな気がします😄
1:09:35
ありがとうございます!いつも楽しく視聴させていただいてます!
一点質問があります。StudentDTO.javaで以下の書き方が出てきますが、最初のStudentBeanは引数の型、次のStudentBeanは戻り値の型であってますでしょうか。
メソッドの定義をしている箇所なのかと思いますが、この記述が見慣れず、それぞれどういう構造なのかわかってないかもしれないです、、よろしくお願いします。
public void add(StudentBean sb){
list.add(sb);
}
public StudentBean get(int i){
return list.get(i);
}
Pon Ponさん、コメントありがとうございました。
いつも動画を見てくれてありがとうございます!
StudentBeanについては、その認識(引数の型と戻り値の型)で合ってますよ👍
もしメソッドの定義方法に不安な部分があれば、こちらの動画を見てもらうと理解が深まるかなと思います。
●【Java入門講座】3-2 設計図クラス
ruclips.net/video/jSk1CzTdp-Q/видео.html