- PR -

Postgre7.2.1でInsertしたい

投稿者投稿内容
season
常連さん
会議室デビュー日: 2004/06/27
投稿数: 25
投稿日時: 2004-07-20 14:55
すみません。Windows版Postgre7.2.1でInsertでDBに登録したいのですがうまくいきません。↓のようにソースを組んでいるのですが、SQLExceptionになってしまい、エラーメッセージ「失敗〜理由:予期しない時にresultが返されました。」と表示されてしまいます。どこを直さないといけないのでしょうか。
stmt.executeUpdate(query);の部分を、「int rset = stmt.executeUpdate(query);」としてもうまくいきませんでした。


ConDB cb = new ConDB();
Connection connection=null;
connection = cb.getConnection();
Statement stmt = connection.createStatement();
query = "insert into \"USR\" values('" + userId + "', '" + pd.getName() + "' ,'" + pass + "')";
stmt.executeUpdate(query);

request.setAttribute("userId", userId);
request.setAttribute("name", name);
request.setAttribute("pass", pass);
request.setAttribute("mode", "complete");
rd = request.getRequestDispatcher(path);
rd.forward(request, response);
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-07-20 15:21
\"USR\" なぜTable名をこういうふうに書きました?わけがありますか。

"はいらないと思いますが。。。。。。。

Table名が合ってるんでしたらカラムの順番、タイプなどを確認してみてはどうでしょう。





[ メッセージ編集済み 編集者: MUSE 編集日時 2004-07-22 14:08 ]
season
常連さん
会議室デビュー日: 2004/06/27
投稿数: 25
投稿日時: 2004-07-20 15:30
>\"USR\" なせTable名をこういうふうに書きました?わけがありますか。
"はいらないと思いますが。。。。。。。

はい、わけがあります。Linuxだといらないのかもしれないですが、Windowsだとダブルクォーテーションを付けないとすぐにSQLExceptionになります。

DELETEならできるのですが、INSERTだけどうしてもできないのです。
この理由が私には分かりません。もし分かればご教授ください。m(_ _)m
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-20 15:34
引用:

seasonさんの書き込み (2004-07-20 14:55) より:

↓のようにソースを組んでいるのですが、SQLExceptionになってしまい、エラーメッセージ「失敗〜理由:予期しない時にresultが返されました。」と表示されてしまいます。

Statement stmt = connection.createStatement();
query = "insert into "USR" values('" + userId + "', '"
  + pd.getName() + "' ,'" + pass + "')";
stmt.executeUpdate(query);


 こういう場合は、queryをSystem.out.printメソッドなどで表示させて、実行しようとしているSQL文を取得します。そのSQL文を、コンソールで実行できるツールに投げて(PostgreSQLならpsql)、SQL文そのものが正しいのかどうかを、まず確認します。

 それで、PostgreSQLでは、オブジェクト名などの文字は大文字小文字は、普通は区別しません。もし、テーブルを作ったときに、create table "USR" (...としたなら、"は必要ですが、そうでないなら不要です。
season
常連さん
会議室デビュー日: 2004/06/27
投稿数: 25
投稿日時: 2004-07-20 15:37
私が使っているPostgreのDBソフトは
http://www10.plala.or.jp/hir_/postgresql-7_2_1_win32_bin_rv04.zip
にUPしました。

つい最近まで
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html
のページで公開されていたのですが、急にHPが閉鎖されたみたいで、
Googleのキャッシュにも残っていないので、どうしていいか分からなくなりました。
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-07-20 15:39
Jitta様の仰るとおりです。

まずSystem.out.print(query)を表示してそのSQL分をWinのpgsqlで実行してみて動けばこれは本当に大変な問題ですが ^^

大体こういう場合SQL分が間違ってることが多いです。

一番気になるのはTable名に"をつけるのがちょっと。。。
私もWinでやってみましたがそんなのなかったと思いますが

頑張ってください。

いい結果が出たら教えてください。


season
常連さん
会議室デビュー日: 2004/06/27
投稿数: 25
投稿日時: 2004-07-20 15:55
たびたびすみません。
System.out.print(query);
を実行してみました。
出力の部分は

insert into "USR" values('042007', 'aiueo' ,'aiueo')

と表示されました。このSQLは多分間違っていないと思われます。
TABLEに""を付けることですがこれは、
コマンドプロンプトでも""を使わないとエラーになるので、
ダブルクォーテーションで囲ってます。私も変なソフトだなと思いながら使ってます。
Windows版ではこのソフトしかないので、どうしてもを使わざるを得ない状態だからです。

まだ解決できていませんが、もう少し試行錯誤してみます。
もし、ちゃんとできたら報告します!
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-07-20 16:20
insert into "USR" values('042007', 'aiueo' ,'aiueo')

このSQL分が間違ってなければWINのpsqlで実行してみてください。

ほかの問題だと判断され調べてみましょう。

実行済みでしたらすみません。

ちなみに'042007'はcharですか? intではないですよね。
順番も合ってますよね?



[ メッセージ編集済み 編集者: MUSE 編集日時 2004-07-20 16:51 ]

スキルアップ/キャリアアップ(JOB@IT)