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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

Q&A

0回答

2662閲覧

sqlから文字列を取得し照合したい

nanasi778

総合スコア13

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

0グッド

0クリップ

投稿2019/06/04 03:03

編集2019/06/04 08:53

前提・実現したいこと

javaでpostgressqlに接続して、selectでデータを取得
それを元に文字列で比較を行い、同じなら成功と表示させたいのですが、うまくいきません。
エラーなどは発生しておりませんので、取得したデータがうまくuserId,passに格納されてないのかと思うのですがそのあたりアドバイスいただけると助かります。

追記
sqlテーブルはすべてvarchar(20)にしております。
(例)PHP(CakePHP)で●●なシステムを作っています。

該当のソースコード

java

1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.PreparedStatement; 4import java.sql.ResultSet; 5import java.sql.SQLException; 6 7 8public class DAO { 9 // データベース接続に使用する情報 10 11 private final String url = "jdbc:postgresql://127.0.0.1:5432/test"; 12 private final String user = "postgres"; 13 private final String password = "postgres"; 14 15 public Acount findByLogin(Login login) { 16 Acount acount = null; 17 18 // データベースへ接続 19 try (Connection conn = DriverManager.getConnection(url, user, password)) { 20 21 // SELECT文を準備 22 String sql = 23 24 "select * from ユーザーログイン情報 where ログインid = ? AND パスワード = ?"; 25 26 PreparedStatement pStmt = conn.prepareStatement(sql); 27 28 pStmt.setString(1, login.getUserId()); 29 pStmt.setString(2, login.getPass()); 30 31 // selectを実行し結果を取得 32 ResultSet rs = pStmt.executeQuery(); 33 34 // 一致したユーザーが存在した場合 35 // そのユーザーを表すAcountインスタンスを生成 36 if (rs.next()) { 37 // 結果からデータを取得 38 String userId = rs.getString("ログインid"); 39 String pass = rs.getString("パスワード"); 40 //String nisu = rs.getString("ユーザー名"); 41 //ここまでは結果を取得できている 42 43 44 acount = new Acount(userId, pass); 45 //,nisu); 46 } 47 } catch (SQLException e) { 48 e.printStackTrace(); 49 return null; 50 } 51 // 見つかったユーザーまたはnullを返す 52 return null; 53 } 54}

java

1package ログイン; 2 3public class Acount { 4 5 private String userId; 6 private String pass; 7 //private String nisu; 8 9 10 public Acount(String userId, String pass 11 //,String nisu 12 ) { 13 this.userId = userId; 14 this.pass = pass; 15 //this.nisu = nisu; 16 17 } 18 19 public String getUserId() { 20 return userId; 21 } 22 23 public String getPass() { 24 return pass; 25 } 26 27}

java

1package ログイン; 2 3public class Login { 4 private String userId; 5 private String pass; 6 7 public Login(String userId, String pass) { 8 this.userId = userId; 9 this.pass = pass; 10 } 11 12 public String getUserId() { 13 return userId; 14 } 15 16 public String getPass() { 17 return pass; 18 } 19}

java

1 2package ログイン; 3 4 5public class DAOTest { 6 public static void main(String[] args) { 7 testFindByLogin1(); // ユーザーが見つかる場合のテスト 8 testFindByLogin2(); // ユーザーが見つからない場合のテスト 9 } 10 11 public static void testFindByLogin1() { 12 Login login = new Login("user01","56789"); 13 14 DAO dao = new DAO(); 15 Acount result = dao.findByLogin(login); 16 17 if (result != null && 18 19 result.getUserId().equals("user01") && result.getPass().equals("56789")) { 20 System.out.println("findByLogin1:成功しました"); 21 } else { 22 System.out.println("findByLogin1:失敗しました"); 23 } 24 } 25 26 public static void testFindByLogin2() { 27 Login login = new Login("minato", "12345"); 28 DAO dao = new DAO(); 29 Acount result = dao.findByLogin(login); 30 if (result == null) { 31 System.out.println("findByLogin2:成功しました"); 32 } else { 33 System.out.println("findByLogin2:失敗しました"); 34 } 35 } 36}

sql

1create table ユーザーログイン情報 (ログインid character varying(20) 2 , パスワード character varying(20) 3 ) 4

sql

1INSERT INTO ユーザーログイン情報 values('user01','54321')

試したこと

lengthで文字数があるかどうかためしたところ0
nullで比較してもなし

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

eclipse Version: 2018-12 (4.10.0)
postgresql 11.1

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

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

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

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

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

m.ts10806

2019/06/04 03:09

>eclipse,postgressqlどちらも最新ver 日がたつと最新ではなくなるのでなるべくバージョンそのまま記載いただければと。 あと、パスワードは暗号化された文字列がDBに格納されていたりしませんか?
m.ts10806

2019/06/04 03:10

CREATE TABLE文、サンプルデータのINSERT文をご提示ください。
nanasi778

2019/06/04 04:32

ご指摘ありがとうございます。どちらも追記しておきました。 パスワードに関しては暗号化されておりません。
Orlofsky

2019/06/04 08:37

>postgressql 4.8 PostgreSQL くらいスペルをちゃんと書けないとこの仕事は辛いかも? 4.8 ってあったとしてもすごく古いバージョンです。バージョン7.1 以前を使っているのが信じがたいです。
nanasi778

2019/06/04 08:54

間違えたことに関しては失礼しましたがいちいち煽らないでください。今やってる人に対して失礼すぎます。
退会済みユーザー

退会済みユーザー

2019/06/04 09:04

mts10806 ヒント 常に null
Orlofsky

2019/06/05 07:10

失礼ついでに、 >javaでpostgressqlに接続して、selectでデータを取得 煽っているつもりはありませんがそういう反応をされるなら誰も回答しないでしょうから、有償のサイトを使った方が良いでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問