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

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

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

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

1回答

1696閲覧

JAVAでMysqlにつなぐことができない

Berut_tok

総合スコア8

MySQL

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2017/07/05 03:36

###実現したいこと
javaとMysqlをつなげたい

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

エラーメッセージ java.lang.NullPointerException ###該当のソースコード import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JRadioButton; import javax.swing.JButton; public class Tuika extends JFrame implements ActionListener { int atai=0; static Connection connect =null; static java.sql.Statement stmt =null; static ResultSet relt=null; static String oi; /** * */ private static final long serialVersionUID = 1L; private JPanel contentPane; private JTextField textField; private JTextField textField_1; private JTextField textField_2; private JTextField textField_3; private JTextField textField_4; private JTextField textField_5; private JTextField textField_6; private JTextField textField_7; DefaultComboBoxModel model; JButton button = new JButton("\u767B\u9332"); JButton button_1 = new JButton("\u623B\u308B"); public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Tuika frame = new Tuika(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public Tuika() { try{ Class.forName("com.mysql.jdbc.Driver"); stmt= connect.createStatement(); connect =DriverManager.getConnection("jdbc:mysql://localhost/data","root","root"); System.out.println("接続成功"); } catch(Exception e){ System.out.println("データがありません"+e); } setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 400); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel label = new JLabel("\u82D7\u5B57"); label.setBounds(89, 56, 39, 38); contentPane.add(label); textField = new JTextField(); textField.setBounds(164, 148, 229, 19); contentPane.add(textField); textField.setColumns(10); JLabel label_1 = new JLabel("\u30DF\u30E7\u30A6\u30B8"); label_1.setBounds(89, 128, 50, 13); contentPane.add(label_1); textField_1 = new JTextField(); textField_1.setBounds(164, 66, 229, 19); contentPane.add(textField_1); textField_1.setColumns(10); JLabel label_2 = new JLabel("\u540D\u524D"); label_2.setBounds(89, 91, 50, 13); contentPane.add(label_2); JLabel lblNewLabel = new JLabel("\u30CA\u30DE\u30A8\u3000"); lblNewLabel.setBounds(89, 151, 50, 13); contentPane.add(lblNewLabel); textField_2 = new JTextField(); textField_2.setBounds(164, 125, 229, 19); contentPane.add(textField_2); textField_2.setColumns(10); textField_3 = new JTextField(); textField_3.setBounds(164, 88, 229, 19); contentPane.add(textField_3); textField_3.setColumns(10); JLabel label_3 = new JLabel("\u751F\u5E74\u6708\u65E5"); label_3.setBounds(22, 217, 66, 13); contentPane.add(label_3); textField_4 = new JTextField(); textField_4.setBounds(100, 214, 96, 19); contentPane.add(textField_4); textField_4.setColumns(10); JLabel label_4 = new JLabel("\u5E74"); label_4.setBounds(208, 217, 50, 13); contentPane.add(label_4); JLabel lblNewLabel_1 = new JLabel("\u6708"); lblNewLabel_1.setBounds(343, 217, 50, 13); contentPane.add(lblNewLabel_1); textField_5 = new JTextField(); textField_5.setBounds(235, 214, 96, 19); contentPane.add(textField_5); textField_5.setColumns(10); textField_6 = new JTextField(); textField_6.setBounds(361, 214, 96, 19); contentPane.add(textField_6); textField_6.setColumns(10); JLabel label_5 = new JLabel("\u65E5"); label_5.setBounds(469, 217, 50, 13); contentPane.add(label_5); button.setBounds(147, 297, 91, 21); contentPane.add(button); button_1.setBounds(355, 297, 91, 21); contentPane.add(button_1); JLabel lblid = new JLabel("\u767B\u9332ID"); lblid.setBounds(89, 21, 50, 13); contentPane.add(lblid); textField_7 = new JTextField(); textField_7.setBounds(164, 18, 229, 19); contentPane.add(textField_7); textField_7.setColumns(10); JLabel label_6 = new JLabel("\u534A\u89D2\u6570\u5B57\uFF16\u6841"); label_6.setBounds(416, 21, 82, 13); contentPane.add(label_6); button.addActionListener(this); button_1.addActionListener(this); getContentPane().add(button); getContentPane().add(button_1); String[] combodata = { "男", "女"}; model = new DefaultComboBoxModel(combodata); JComboBox comboBox = new JComboBox(model); comboBox.setBounds(164, 185, 74, 19); contentPane.add(comboBox); } public void actionPerformed(ActionEvent ae){ try{ String text7=textField_7.getText(); String text3=textField_3.getText(); String text2=textField_2.getText(); String text1=textField_1.getText(); String text=textField.getText(); String text8=(String)model.getSelectedItem(); String text6=textField_6.getText(); String text5=textField_5.getText(); String text4=textField_4.getText(); text4=""+text4+""+text5+""+text6+""; if(ae.getSource()==button){ stmt= connect.createStatement(); stmt.executeUpdate("insert into main values("+text7+",'"+text8+"',"+text4+",0,0,0"); stmt.executeUpdate("insert into name values("+text7+",'"+text3+"','"+text1+"','"+text+"','"+text2+"'"); Frame2 next=new Frame2(text4); next.setVisible(true); setVisible(false); } else if(ae.getSource()==button_1){Frame2 next=new Frame2(text7); next.setVisible(true); setVisible(false);} }catch(Exception e){ e.printStackTrace(); } } private String integerParsInt(String text4) { // TODO 自動生成されたメソッド・スタブ return null; } } ###試したこと 接続するプログラムだけでの接続は確認しました ###補足情報(言語/FW/ツール等のバージョンなど) 言語 java ツール エクリプス

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

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

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

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

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

guest

回答1

0

質問の作法については置いておくとして、たぶんこれでしょう。

Java

1public Tuika() { 2try{ 3Class.forName("com.mysql.jdbc.Driver"); 4stmt= connect.createStatement(); 5connect =DriverManager.getConnection("jdbc:mysql://localhost/data","root","root"); 6 7System.out.println("接続成功"); 8}

connect が null の状態で connect.createStatement() したら、そりゃ NullPointerException になります。
先に connect を確立させなければだめですね。

投稿2017/07/05 03:40

tacsheaven

総合スコア13703

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

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

Berut_tok

2017/07/05 04:41

NullPointerException は解決しましたが今度は java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) と出てしまいます... 接続するだけのプログラムではこんなこと出なかったんです...
tacsheaven

2017/07/05 04:46

接続するだけのプログラムと、getConnection の引数は同じになっていますか?
Berut_tok

2017/07/05 04:49

コピー&ペーストをした後、自分とほかの人に確認してもらったので間違ってないと思います。
Akihito_Jv

2017/07/05 05:16

横から失礼致します。 Eclipseをご利用になられているのであれば、 ブレークポイントを張って、どこで、エラーが発生しているのか 特定されたほうが解決に近づくと思います。 また、エラーの中に、何行目でエラーが発生したとの情報が記載されているかと思いますので、 そちらを記載されたほうが、解答もしやすくなります。 ご検討の程宜しくお願い致します。
kurokoba

2017/07/05 05:28

>Berut_tok 割り込み失礼。 「接続するだけのプログラム」の情報がもうちょいあると回答しやすいのでは? 差支えなければソースと"どの環境から接続したか(DBサーバと同じサーバ?)"とか。 同様のエラーがでた場合、まずDB側のパーミッションを疑うのが手筋と思いますが、「とりあえず接続した実績」があるというのがこの質問のひっかかるところ。ここをキレイにしてから検討を進めたい。
Berut_tok

2017/07/05 05:39

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; public class De { static Connection connect =null; static java.sql.Statement stmt =null; static ResultSet relt=null; static String oi,name; public static void main(String[] args) { try{ Class.forName("com.mysql.jdbc.Driver"); connect =DriverManager.getConnection("jdbc:mysql://localhost/data","root","root"); stmt= connect.createStatement(); System.out.println("接続成功"); } catch(Exception e){ System.out.println("データがありません"+e);} try{ stmt= connect.createStatement(); relt=stmt.executeQuery("SELECT * FROM name where id=164444"); while(relt.next()){ name=relt.getString("namae"); } System.out.println(name); } catch(Exception e){ System.out.println(e); } } } 質問しているプログラムと同じデータベースに接続して名前を取り出すプログラムです こちらはちゃんと動いているのですが質問しているほうのプログラムは動きません。
tacsheaven

2017/07/05 05:41

まさかとは思いますが、接続確認のプログラムと、今試されているプログラム、同じマシン上で動かしてますよね?
Berut_tok

2017/07/05 05:44

同じマシンで動かしています。 同じではないほうがよいのですか?
tacsheaven

2017/07/05 05:55

同じマシンでないと意味がありません。DBとの接続文字列(jdbc:~)が異なってしまいますから。 で、見る限り同じなのですよね…? MySQL は「root@localhost」からのパスワードによるアクセスは禁止されている、といっているのですが、接続確認をするプログラムも同じ設定で接続を試みるので、結果が異なる説明がつけられません。
kurokoba

2017/07/05 07:53

>Berut_tok 多分前提になってる情報が間違って可能性が高い。 確実にいえることはMySQLのエラーが返却されている=MySQLまでは問い合わせにいっててサーバURL+ポート番号まではあってる ということまで。 (そもそもここが違うと話は違う。「接続確認をするプログラム」の"localhost"と問題のプログラムの"localhost"は同じ場所なのは確実?初歩的なことだがこういうところでやらかすのが人間。) 参考までに追加情報希望。 ・MySQLはPCに直接インストールしているのか?仮想環境上にのせているのか?サーバに乗せてサーバ内で実行しているのか? ・OSは? ・プログラムの実行方法は?(ビルドしてからorEclipse等のIDEから?) ※一応勘でいっちゃうとMySQLって接続元別に接続権限与えないといけないのでそこにひっかかってるのでは(なので前提情報がなにか違う可能性があるということ)?
Berut_tok

2017/07/06 02:39

MySQL はPCに直接インストールしています OSはWindows7 64bitです プログラムの実行方法はEclipseからです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問