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

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

875閲覧

JAVA-JAVAFX TableViewとMySQLの組み合わせ

shibayun

総合スコア12

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/01/22 04:01

初めて投稿するため、文章の見にくさや記述不足なところがあるかもしれません。
現在JavaFXでDB(MySQL)と接続し、tableviewでDBのテーブルのデータを表示するプログラムを作成中です。
画面遷移は
選択画面 → [1]CD画面[2]DVD画面
となっています。
選択画面から[1]CD画面への画面遷移やtableviewの表示、データ表示はできるのですが、[2]DVD画面は画面遷移すらできない状況です。

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

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774) . . . at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) . at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769) ... 48 more Caused by: javafx.fxml.LoadException: /F:/NetbeensProject/KENSAKUSYSTEM/build/classes/usr/DVDNEW.fxml at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097) at usr.NEW_SELECTController.DVDnewButtonAction(NEW_SELECTController.java:62) ... 58 more Caused by: java.lang.NullPointerException at usr.DVDNEWController.initialize(DVDNEWController.java:97) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) ... 66 more

###該当のソースコード

java

1[DVDNEWController.java] 2package usr; 3 4import java.io.IOException; 5import java.net.URL; 6import java.sql.Connection; 7import java.sql.DriverManager; 8import java.sql.PreparedStatement; 9import java.sql.ResultSet; 10import java.util.ResourceBundle; 11 12import java.util.Date; 13import javafx.collections.FXCollections; 14import javafx.collections.ObservableList; 15import javafx.event.ActionEvent; 16import javafx.fxml.FXML; 17import javafx.fxml.FXMLLoader; 18import javafx.fxml.Initializable; 19import javafx.scene.Node; 20import javafx.scene.Parent; 21import javafx.scene.Scene; 22import javafx.scene.control.Button; 23import javafx.scene.control.TableColumn; 24import javafx.scene.control.TableView; 25import javafx.scene.control.TextField; 26import javafx.scene.control.cell.PropertyValueFactory; 27import javafx.stage.Stage; 28 29public class DVDNEWController implements Initializable 30{ 31 ObservableList<User2> data=FXCollections.observableArrayList(); 32 33 PreparedStatement preparedStatement; 34 ResultSet rs; 35 36 @FXML 37 TableView<User2> table; 38 39 @FXML 40 private TableColumn<?, ?> imagepathCol; 41 42 @FXML 43 private TableColumn<?, ?> titleCol; 44 45 @FXML 46 private TableColumn<?, ?> directorCol; 47 48 @FXML 49 private TableColumn<?, ?> performerCol; 50 51 @FXML 52 private TableColumn<?, ?> genreCol; 53 54 @FXML 55 private TableColumn<?, ?> startdayCol; 56 57 /*@FXML 58 private TableColumn<?, ?> stockCol;*/ 59 60 @Override 61 public void initialize(URL arg0, ResourceBundle arg1) 62 { 63 titleCol.setCellValueFactory(new PropertyValueFactory<>("タイトル")); //順番に気をつけること。 64 directorCol.setCellValueFactory(new PropertyValueFactory<>("監督名")); 65 performerCol.setCellValueFactory(new PropertyValueFactory<>("出演者")); 66 genreCol.setCellValueFactory(new PropertyValueFactory<>("ジャンル")); 67 startdayCol.setCellValueFactory(new PropertyValueFactory<>("レンタル開始日")); 68 //stockCol.setCellValueFactory(new PropertyValueFactory<>("在庫")); 69 imagepathCol.setCellValueFactory(new PropertyValueFactory<>("画像")); 70 //shosaiCol.setCellValueFactory(new PropertyValueFactory<>("詳細")); 71 loadDatabaseData(); 72 } 73 74 public void loadDatabaseData() 75 { 76 try 77 { 78 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root",""); 79 DriverManager.setLogWriter(new java.io.PrintWriter(System.out)); 80 data = FXCollections.observableArrayList(); 81 // Execute query and store result in a resultset クエリを実行し、結果を格納する。 82 ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM dvd表"); 83 84 while(rs.next()) 85 { 86 data.add(new User2( 87 rs.getString("title"), 88 rs.getString("director"), 89 rs.getString("performer"), 90 rs.getString("genre"), 91 rs.getString("startday"), 92 //rs.getString("stock"), 93 rs.getString("imagepath") 94 )); 95 table.setItems(data); 96 } 97 preparedStatement.close(); 98 rs.close(); 99 } 100 catch(Exception e) 101 { 102 System.err.println(e); 103 } 104 } 105 106} 107 108 109 110 111 112[User2.java] 113package usr; 114 115public class User2 116{ 117 private String title; 118 private String director; 119 private String performer; 120 private String genre; 121 private String startday; 122 //private String stock; 123 private String imagepath; 124 125 public User2(String title, String director,String performer,String genre,String startday,/*String stock,*/String imagepath) 126 { 127 super(); 128 this.title = title; 129 this.director = director; 130 this.performer = performer; 131 this.genre = genre; 132 this.startday = startday; 133 //this.stock = stock; 134 this.imagepath = imagepath; 135 } 136 137 public String getタイトル() { 138 return title; 139 } 140 141 public String get監督名() { 142 return director; 143 } 144 145 public String get出演者() { 146 return performer; 147 } 148 149 public String getジャンル() { 150 return genre; 151 } 152 153 public String getレンタル開始日() { 154 return startday; 155 } 156 157 /*public String get在庫() { 158 return stock; 159 }*/ 160 161 public String get画像() { 162 return imagepath; 163 } 164 165 166 167 168 public void setタイトル(String title) { 169 this.title=title; 170 } 171 172 public void set監督名(String director) { 173 this.director=director; 174 } 175 176 public void set出演者(String performer) { 177 this.performer=performer; 178 } 179 180 public void setジャンル(String genre) { 181 this.genre=genre; 182 } 183 184 public void setレンタル開始日(String startday) { 185 this.startday=startday; 186 } 187 188 /*public void set在庫(String stock) { 189 this.stock=stock; 190 }*/ 191 192 public void set画像(String imagepath) { 193 this.imagepath=imagepath; 194 } 195 196 197 198} 199

###補足情報(言語/FW/ツール等のバージョンなど)
開発ソフト:NewBeens,SceneBuilder,a5m2

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

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

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

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

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

guest

回答1

0

ベストアンサー

stackトレースを良く見てみれば
Caused by: java.lang.NullPointerException
at usr.DVDNEWController.initialize(DVDNEWController.java:97)
という行がありますね。ソースをテキストエディタに貼って該当行番号のソースは
rs.close();
ということは、rsがnullなのではないでしょうか?

投稿2018/01/22 04:14

unz.hori

総合スコア1057

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

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

shibayun

2018/01/22 04:20

すみません、文字数のことを考えて質問時に原因に関係のないソースコードを省略してしまいました。 こちらで確認したところ 91:@Override 92:public void initialize(URL arg0, ResourceBundle arg1) 93:{ ... 97:genreCol.setCellValueFactory(new PropertyValueFactory<>("ジャンル")); でした。すみません。
unz.hori

2018/01/22 04:23

ソースの行番号が違っていたことはわかりました。とにかくその行でNullPointerExceptionが発生しているので、提示されたソースで見るとgenreColがnullなのではと想定します。デバッガーが使えるのであればブレークポイントを設定して確認することをお勧めします。
shibayun

2018/01/22 04:25

実行できました。 原因として、DVDNEW.FXMLのfx:idでgenreColをGenreColと記述していました。 迅速な回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問