6月7日のエラー解決

springの解体新書の3章のデータベースから値を取得してみるでのエラー解決

に対しての気づき

 

エラー内容

f:id:tomato-program:20200611223442p:plain

2020-06-11 22:37:55.993 ERROR 37208 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECTemployee_id, employee_name, age FROM employee WHERE employee_id=?]; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: SQLステートメントに文法エラーがあります "SELECTEMPLOYEE_ID[*], EMPLOYEE_NAME, AGE FROM EMPLOYEE WHERE EMPLOYEE_ID=?"; 期待されるステートメント "SET, SAVEPOINT, SCRIPT, SHUTDOWN, SHOW"
Syntax error in SQL statement "SELECTEMPLOYEE_ID[*], EMPLOYEE_NAME, AGE FROM EMPLOYEE WHERE EMPLOYEE_ID=?"; expected "SET, SAVEPOINT, SCRIPT, SHUTDOWN, SHOW"; SQL statement:
SELECTemployee_id, employee_name, age FROM employee WHERE employee_id=? [42001-200]] with root cause
org.h2.jdbc.JdbcSQLSyntaxErrorException: SQLステートメントに文法エラーがあります "SELECTEMPLOYEE_ID[*], EMPLOYEE_NAME, AGE FROM EMPLOYEE WHERE EMPLOYEE_ID=?"; 期待されるステートメント "SET, SAVEPOINT, SCRIPT, SHUTDOWN, SHOW"
Syntax error in SQL statement "SELECTEMPLOYEE_ID[*], EMPLOYEE_NAME, AGE FROM EMPLOYEE WHERE EMPLOYEE_ID=?"; expected "SET, SAVEPOINT, SCRIPT, SHUTDOWN, SHOW"; SQL statement:
SELECTemployee_id, employee_name, age FROM employee WHERE employee_id=? [42001-200]

「7SQLステートメントに文法エラーがあります ”SELECTEMPLOYEE_ID

 

ここで、自分がしたことは

・スペルミス、空白ミスとかがないか確かめる

・エラー文をコピペしてgoogleで調べる

twitterで助けを求める(森さん大川氏ありがとうございやす)

 

これでも、なかなか解決できなくて

ここで、ようやくエラー文をちゃんと読んでみることに目を向けます

それでエラーの原因が分かりました

 

で、エラーの原因はエラー文に書いてある通り

SQLの文法エラーでして

String query = "SELECT"
   + "employee_id,"
   + "employee_name,"
   + "age"
   + "FROM employee"
   + "WHERE employee_id=?";

 

この文がエラーを生み出してました。(エラー文に書いてあります)

何がダメだったかというと

空白が無い事でした!

正しいのはこれ

String query = "SELECT"
   + "  employee_id,"
   + "  employee_name,"
   + "  age"
   + "  FROM employee"
   + "  WHERE employee_id=?";

 

正直、エラー文を読んでどこにエラーの原因もあるか分かっていて

SQLの文法になにかしらの間違いがあるんだろうなーとは

思っていたけど全然気づけずにすごい時間かかりました

 

で、なんで空白がないといけないのかと気づいたのかというと

一度ノートに、この間違っている文を文字列を連結して書いてみると

SELECTemployee_id,employee_name,ageFROM employeeWHERE employee_id=?

となりました(エラー文にまんま書いてありました)

これで

あ、SQLの学習しとるときSELECT文書くときに

SELECT文と指定列の間に空白いれてたわ!!

てな感じで、これにも空白入れないかんのかと思い

空白入れてみたらエラー解決できました!

 

で、なにに対して気づきがあったのかというと

一つは、エラー文をよく読むという事

エラー文が英語と日本語となんかいろいろとごっちゃになってて

あんまり読む気になれなかったけど、これを気に仲良くなれそうな気がします

 

 

で、2つ目は気づきというか前提知識をもってて良かったなと

spring解体新書する前にSQLを勉強していたので空白ないとアカンやん!てなったけど

この知識なかったらもっと時間かかってたのかなと

 

森さんから教えていただいたサンプルのコードを見て

空白のヒントをもらえたので、前提知識がなくともサンプルとかを見てエラーを解決することもできるだろうけど、きちんと理解した上での脳汁はえぐいですね

 

終わり

 

なんか楽しかった脳汁

5月25日

 

今日した事(なう)

・スッキリわかるサーブレットJSP3章

 

●気づき

3章で、サーブレットクラスを作成して実行するという項目をやっていて

実行しても、ブラウザには空白のままでした。

こんな感じ↓ ↓ ↓

f:id:tomato-program:20200525230119p:plain

なんで空白やねんと思いながらコードとにらめっこすること1時間

あれ、なんかHTMLで出力する内容が全部タブに書いてないかい?

と思い、もう一度コードを見直す

↓  ↓  ↓

f:id:tomato-program:20200525230515p:plain

 

あ、、、47行目<titile>の後ろがなぜか</html>で終わってるやんと気づき

そこを</title>に書き直すと

↓  ↓  ↓

f:id:tomato-program:20200525230830p:plain

ちゃんと表示された!!!!!

 

で、気づきっていうのは

HTMLで出力したい内容を書くというのはわかっとったけど

なんで、out.println();の中にHTMLのタグまでかいてんだろうなー

タグまで書いたら表示されるときにタグも一緒に出てくるんかなー

と思いながら理解度低いままコードを書きよったちゃけど

これは、あれだ!

普通にHTMLのコードを書いてるだけだ!と気づきまして

そりゃあ、<title>の後に</title>がなければ、1枚目の画像のように

タブに永遠とタイトル書かれるわな!って

 

よくよく考えたら、HTMLのタグないと

どれがタイトルでどれが見出しとか区別つかんくなるけん

タグも一緒に書くんかって感じで落ち着きました

 

 

 

 

 

 

なんか楽しかった脳汁

5月25日

 

今日した事(なう)

・スッキリわかるサーブレットJSP3章

 

●気づき

3章で、サーブレットクラスを作成して実行するという項目をやっていて

実行しても、ブラウザには空白のままでした。

こんな感じ↓ ↓ ↓

f:id:tomato-program:20200525230119p:plain

なんで空白やねんと思いながらコードとにらめっこすること1時間

あれ、なんかHTMLで出力する内容が全部タブに書いてないかい?

と思い、もう一度コードを見直す

↓  ↓  ↓

f:id:tomato-program:20200525230515p:plain

 

あ、、、47行目<titile>の後ろがなぜか</html>で終わってるやんと気づき

そこを</title>に書き直すと

↓  ↓  ↓

f:id:tomato-program:20200525230830p:plain

ちゃんと表示された!!!!!

 

で、気づきっていうのは

HTMLで出力したい内容を書くというのはわかっとったけど

なんで、out.println();の中にHTMLのタグまでかいてんだろうなー

タグまで書いたら表示されるときにタグも一緒に出てくるんかなー

と思いながら理解度低いままコードを書きよったちゃけど

これは、あれだ!

普通にHTMLのコードを書いてるだけだ!と気づきまして

そりゃあ、<title>の後に</title>がなければ、1枚目の画像のように

タブに永遠とタイトル書かれるわな!って

 

よくよく考えたら、HTMLのタグないと

どれがタイトルでどれが見出しとか区別つかんくなるけん

タグも一緒に書くんかって感じで落ち着きました

 

 

 

 

 

 

5月12日13日のアウトプット

5月12日.13日でした事

・スッキリわかるJava 10章から12章.14章 7h

・スッキリわかるJava 1章から5章の復習 2.5h

 

☆気付き

・自分はいままでの勉強法として本を読んだりコードを軽く触ってみたりと勉強をしてたが、10章から12章で継承や多態性を学び始めて気づいたのが、今の勉強法ではなんとなく程度でしか理解できないと気づいた

座学ばっかりしないで、もっとコードを書いて調べながらした方が理解が深まると思ったので勉強法を変えようと思う

 

・ブログの内容がまだ勉強がどうのこうのっていう内容なので、実践的な勉強法を始めたときにはブログの内容も変えていく

今のブログ内容はあまりアウトプットになってないため、例えば

・エラーした原因

→それにどう対処したのか

 →どのように調べたのか

とかを書いていく

 

☆悪かった点

・集中力がもたない、、、

 →いろいろな勉強法を試して集中できるやり方を見つける

 

☆良かった点

・勉強が習慣づいてきた(☝︎ ՞ਊ ՞)☝︎

 

5月10日アウトプット

 

☆今日した事

Raise Techの録画された動画視聴   4h

スッキリわかるJava9章 2h

計6h

 

☆RaiseTech の録画視聴

戸部さんの話を聞いてて、自分の勉強法を改めようと思った

完璧主義だから完璧に理解するまで先に進めない

→その結果、進みが遅くなる

 →焦る

今でもうこの状態だから、いったんマインドを変える必要がある

 

あとは、本を全部する必要はないっていうのは

なるほどなと思った

優先順位を決めて、優先順位の高いものもしくは必須事項だけを先に勉強をする

その先に、他にも勉強する必要があるなと思えば、その都度その部分を勉強すればよい

 

☆スッキリわかるJavaでした事

ざっくり理解はできたけど、コンストラクタにも特例があったり暗黙のルール的なものがあったりオーバーロードもあったりで1つの事に対して、複数のルールがあるから、面白いと思った🤣

 

参照は、あんまり理解できてないけど

実行結果は自分が思っている値が出るから

理解まであと少しなのかな

 

☆悪かったこと

うーん、集中できずにあんまり勉強できんのを何とかせないかんと思った🤔

休みの日より仕事の日の方が集中できる事が分かったけん仕事の日に勉強を詰め込もう

 

☆良かった事

今日も勉強できた✨

 

☆明日やる事

スッキリわかるJava 14章15章

5月7日のアウトプット

スッキリわかるJava入門7章

オブジェクト指向

 

僕は仮想世界の神様になりました

 

 

基本文法とオブジェクト指向とでは

そもそも学ぶものも学び方も全く違くて

 

基本文法は、記述方法のルール

書き方の正解自体を学ぶ

 

オブジェクト指向

プログラムを作る時には、このようにプログラム全体を捉えてこういう文法の組み合わせ方をすると楽にプログラムを作れるお

っていう正解に辿り着くための考え方を学ぶ

 

 

オブジェクト指向とは、

規模が大きくなって開発者自身が内容を把握しきれなくなるという課題をぶち破るために、人間が内容を把握しやすいプログラム開発を実現するというもの

 

オブジェクト指向の本質とは

現実世界の登場人物たちを、コンピュータの中の仮想世界にオブジェクトとして再現し、現実世界と同じように連携して動くようにプログラムを作る事

→現実世界をマネる

 

この本質を覚えておく!

いくらいろんな機能を覚えて使えたとしても「人間が把握しにくく修正や交換が困難なプログラム」を作っては、それは意味がない

オブジェクト指向とは人間が把握しやすくするために作ったから

 

 

5月6日のアウトプット

 

何かわからないことがあって、質問しようと思ったときに

相手にうまく伝わるように伝えようとするものの

 

自分の思っていることや分からないことをうまく

言語化できないなと思いブログで言語化をうまくできるよう鍛えるためと

プログラミングのアウトプットもふまえて

今日からできるだけブログでアウトプットをしていきます!

 

 

5月6日

スッキリわかるJava入門の6章(複数クラスを用いた開発)

 

5章まではすんなり学習できていたのですが、6章で分からなくなりました。

 

解説中に分からない用語が出てきて、その分からない用語をググると解説が出てくるのですが、その解説にもわからない用語が出てきて、またその用語を調べると・・・・・・のループを繰り返していました(笑)

 

圧倒的、自分の知識不足なので用語ももっと知るべき必要があると感じました。

 

また、今日の目標としては

スッキリわかるJava6章を終わらせオブジェクト指向の8章くらいまでは

進もうという目標だったのですが、6章でつまずき目標達成はできませんでした

 

目標達成できないと罪悪感にかられるので、もうすこし自分のペースにあった目標を立てようと思いました(笑)

 

今日は6章でつまずいてやる気をそがれてしまい、コードを書いて遊んでいたのですが

自分は大文字小文字をよく間違えてエラーが起こっていることに気づけたので

大文字小文字はよく注意しようと思いました!

 

あとは、RaiseTechの5月生の同期の方の勉強スピードを見ると

焦ったり落ち込んだりしそうなので、なるべく見ないようにしようと思いました(笑)