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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

5164閲覧

JavaでSQL文を実行した際のエラーをなくしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/05/18 13:25

前提・実現したいこと

eclipseのDAOクラス
122行目でpostgreSQLのテーブルからserial型のidを取得しようとしています。
実行した場合に以下のエラーメッセージが発生しました。

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

org.postgresql.util.PSQLException: この ResultSet に列名 id ありません。

該当のソースコード

Java

1 2public class AddressBookDAO { 3 public List<AddressBook> findAll() { 4 5 Connection conn = null; 6 List<AddressBook> addressBookList = new ArrayList<AddressBook>(); 7 8 try { 9 10 //JDBCドライバを読み込み 11 Class.forName("org.postgresql.Driver"); 12 13 //データベースへ接続 14 conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/addressbookuser", "postgres", "THacE3raf1L2"); 15 16 //SELECT文を準備 17 String sql = "SELECT * FROM addressbook"; 18 PreparedStatement pStmt = conn.prepareStatement(sql); 19 20 //SELECTを実行し、結果表を取得 21 ResultSet rs = pStmt.executeQuery(); 22 23 //結果表に格納されたレコードの内容をAddressBookUserに設定し、ArrayListインスタンスに追加 24 while(rs.next()) { 25 String id = rs.getString("id"); 26 String name = rs.getString("name"); 27 String gender = rs.getString("gender"); 28 String phonenumber = rs.getString("phonenumber"); 29 String emailaddress = rs.getString("emailaddress"); 30 String postalcode = rs.getString("postalcode"); 31 String address1 = rs.getString("address1"); 32 String address2 = rs.getString("address2"); 33 String address3 = rs.getString("address3"); 34 String address4 = rs.getString("address4"); 35 String address5 = rs.getString("address5"); 36 String birth = rs.getString("birth"); 37 String age = rs.getString("age"); 38 String birthplace = rs.getString("birthplace"); 39 AddressBook addressBook = new AddressBook(id, name, gender, phonenumber, emailaddress, postalcode, address1, address2, address3, address4, address5, birth, age, birthplace); 40 addressBookList.add(addressBook); 41 } 42 }catch(SQLException e) { 43 e.printStackTrace(); 44 return null; 45 }catch(ClassNotFoundException e) { 46 e.printStackTrace(); 47 return null; 48 }finally { 49 //データベースを切断 50 if(conn != null) { 51 try { 52 conn.close(); 53 }catch(SQLException e) { 54 e.printStackTrace(); 55 return null; 56 } 57 } 58 } 59 return addressBookList; 60 } 61 62 public boolean delete(String id) { 63 64 Connection conn = null; 65 66 try { 67 68 //JDBCドライバを読み込み 69 Class.forName("org.postgresql.Driver"); 70 71 //データベースへ接続 72 conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/addressbookuser", "postgres", "THacE3raf1L2"); 73 74 //DELETE文を準備 75 String sql = "DELETE FROM addressbook WHERE id = ?"; 76 PreparedStatement pStmt = conn.prepareStatement(sql); 77 78 //DELETE文中の「?」に使用する値を設定してSQLを完成 79 int deleteId = Integer.parseInt(id); 80 pStmt.setInt(1, deleteId); 81 82 //DELETE文を実行し、結果表を取得 83 int deleteCount = pStmt.executeUpdate(); 84 85 if(deleteCount != 0) { 86 return true; 87 }else { 88 return false; 89 } 90 91 }catch(SQLException e) { 92 e.printStackTrace(); 93 return false; 94 }catch(ClassNotFoundException e) { 95 e.printStackTrace(); 96 return false; 97 }finally { 98 //データベースを切断 99 if(conn != null) { 100 try { 101 conn.close(); 102 }catch(SQLException e) { 103 e.printStackTrace(); 104 return false; 105 } 106 } 107 } 108 } 109 110 //idが一番大きいレコードのidを返す 111 public String resister() { 112 Connection conn = null; 113 114 try { 115 116 //JDBCドライバを読み込み 117 Class.forName("org.postgresql.Driver"); 118 119 //データベースへ接続 120 conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/addressbookuser", "postgres", "THacE3raf1L2"); 121 122 //SELECT文を準備 123 String sql = "SELECT MAX(id) FROM addressbook"; 124 PreparedStatement pStmt = conn.prepareStatement(sql); 125 126 //SELECTを実行し、結果表を取得 127 ResultSet rs = pStmt.executeQuery(); 128 129 //結果表に格納されたレコードの内容をidインスタンスに追加 130 String id = ""; 131 while(rs.next()) { 132 id = rs.getString("id"); 133 } 134 if(id != "") { 135 return id; 136 }else { 137 return ""; 138 } 139 }catch(SQLException e) { 140 e.printStackTrace(); 141 return null; 142 }catch(ClassNotFoundException e) { 143 e.printStackTrace(); 144 return null; 145 }finally { 146 //データベースを切断 147 if(conn != null) { 148 try { 149 conn.close(); 150 }catch(SQLException e) { 151 e.printStackTrace(); 152 return null; 153 } 154 } 155 } 156 } 157} 158 159

試したこと

コンソールでSQL文を実行したところ問題なく実行されました。
デバックしたところ、143行目を実行しようとしたところ例外へ飛びました。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

java

1 String sql = "SELECT MAX(id) FROM addressbook"; 2 PreparedStatement pStmt = conn.prepareStatement(sql);

MAX(id)なのでidでは参照できません。

SQL

1SELECT MAX(id) as id FROM addressbook

のようにして下さい。

投稿2020/05/18 14:33

sazi

総合スコア25206

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

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

退会済みユーザー

退会済みユーザー

2020/05/19 06:24

ありがとうございます! できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問