- - PR -
Postgre7.2.1でInsertしたい
«前のページへ
1|2|3|4|5
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-24 02:42
何が原因かよく分からないし、時間が来てしまったので、家にソースを持ち帰って家のPCで動作確認してみました。
色々ソースをいじった結果正常にInsertされるようになりました。(今のところ家のPCではですが) 私はコネクション部分は、 package bbs; import java.sql.*; import java.net.*; public class ConDB{ /** 属性 */ private Connection connection; /** コンストラクタ */ public ConDB(){ try{ //DB情報取得 String dataBaseSQL = "PostgreSQL"; String dataBaseHost = "127.0.0.1"; String dataBasePort = "5432"; String dataBaseName = "season"; String dataBaseUsr = "season"; String dataBasePass = "season"; //MySQL用コネクション処理 if(dataBaseSQL.equals("MySQL")){ DriverManager.registerDriver(new org.gjt.mm.mysql.Driver()); connection = DriverManager.getConnection ("jdbc:mysql://" + dataBaseHost + ":" + dataBasePort + "/" + dataBaseName + "?useUnicode=true&characterEncoding=EUC_JP&user=" + dataBaseUsr + "&password=" + dataBasePass); } //PostgreSQL用コネクション処理 else if(dataBaseSQL.equals("PostgreSQL")){ DriverManager.registerDriver(new org.postgresql.Driver()); connection = DriverManager.getConnection ("jdbc:postgresql://" + dataBaseHost + ":" + dataBasePort + "/" + dataBaseName + "?charSet=EUC_JP&user=" + dataBaseUsr + "&password=" + dataBasePass); } }catch(SQLException e){ System.out.println(e.getMessage()); e.printStackTrace(); }catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace(); } } /** DBの接続情報を返すメソッド */ public Connection getConnection(){ return connection; } } と組んでいたのですが、 package bbs; import java.sql.*; import java.net.*; public class DB{ Connection conn = null; public Connection DB() { String dataBaseSQL = "PostgreSQL"; String dataBaseHost = "127.0.0.1"; String dataBasePort = "5432"; String dataBaseName = "season"; String dataBaseUsr = "season"; String dataBasePass = "season"; try{ DriverManager.registerDriver(new org.postgresql.Driver()); conn = DriverManager.getConnection ("jdbc:postgresql://" + dataBaseHost + ":" + dataBasePort + "/" + dataBaseName + "?charSet=EUC_JP&user=" + dataBaseUsr + "&password=" + dataBasePass); } catch( Exception e ) { System.err.println(e); } return conn; } } という風にメソッドを分けずに値を返したら正常に動作しました。これ以外に職場でやったことと違うことは特にしてません。 しかし、メソッドを分けたほうのソースで家のPCで実行すると、実行できませんが NullPointerException (Statement型変数がnull)のエラーなので、職場のPCで出てたエラーと異なります。 このソースを会社で実行した場合、できるかわかりませんが来週の月曜日出社したときに確認してみます。 | ||||||||
|
投稿日時: 2004-07-26 09:18
会社のPCでも動作確認してみたらできるようになりました!
やはりコネクション部分のクラスのメソッドを分けずにコンストラクタ内で値返しするように組み替えたら出来ました。 なぜなのか理由は分からないのですが。とりあえず解決できてよかったです。 皆さん長い間いろいろ協力してくださって有難うございましたm(_ _)m | ||||||||
|
投稿日時: 2004-07-26 10:42
2重投稿により削除[ メッセージ編集済み 編集者: みけ 編集日時 2004-07-26 10:43 ] | ||||||||
|
投稿日時: 2004-07-26 10:42
こんにちは。
解決されたとのことなので、もう大丈夫だとは思いますが、 時間があるときに、なぜそうなったのか?どうしてうまくいったか?は追求した方が いいと思いますよ。それが私達の財産になるものですから。。。 | ||||||||
|
投稿日時: 2004-07-26 21:52
おっしゃるとおりですね。追求していきたいと思います。
分かったときには報告に参ります。ありがとございました。 | ||||||||
|
投稿日時: 2004-07-26 22:06
ちなみに「コンストラクタ内で値返し」ってなんのことですか? もしかして public Connection DB() { … } このメソッドのことですか? だとすると、これはコンストラクタではありませんよ。 もし私がConDBクラスを書き換えるとすると、こんな感じになります。
もし原因がコネクションの使いまわしにあったのであれば、これでも解決するのではないかと 思いますが。 [ メッセージ編集済み 編集者: uk 編集日時 2004-07-26 22:07 ] | ||||||||
|
投稿日時: 2004-07-28 11:33
遅くなってすみません。コンストラクタの意味をきっちり理解してませんでした(汗)
ukさんのソースで実行してみたら正常に動作しました。 そうですね。コネクションの使い回しが問題みたいです。 今後実務に携わるときには、気をつけようと思います。 ありがとうございました。 | ||||||||
«前のページへ
1|2|3|4|5
