- - PR -
Postgre7.2.1でInsertしたい
1|2|3|4|5
次のページへ»
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 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-07-20 15:21
\"USR\" なぜTable名をこういうふうに書きました?わけがありますか。
"はいらないと思いますが。。。。。。。 Table名が合ってるんでしたらカラムの順番、タイプなどを確認してみてはどうでしょう。 [ メッセージ編集済み 編集者: MUSE 編集日時 2004-07-22 14:08 ] | ||||
|
投稿日時: 2004-07-20 15:30
>\"USR\" なせTable名をこういうふうに書きました?わけがありますか。
"はいらないと思いますが。。。。。。。 はい、わけがあります。Linuxだといらないのかもしれないですが、Windowsだとダブルクォーテーションを付けないとすぐにSQLExceptionになります。 DELETEならできるのですが、INSERTだけどうしてもできないのです。 この理由が私には分かりません。もし分かればご教授ください。m(_ _)m | ||||
|
投稿日時: 2004-07-20 15:34
こういう場合は、queryをSystem.out.printメソッドなどで表示させて、実行しようとしているSQL文を取得します。そのSQL文を、コンソールで実行できるツールに投げて(PostgreSQLならpsql)、SQL文そのものが正しいのかどうかを、まず確認します。 それで、PostgreSQLでは、オブジェクト名などの文字は大文字小文字は、普通は区別しません。もし、テーブルを作ったときに、create table "USR" (...としたなら、"は必要ですが、そうでないなら不要です。 | ||||
|
投稿日時: 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-07-20 15:39
Jitta様の仰るとおりです。
まずSystem.out.print(query)を表示してそのSQL分をWinのpgsqlで実行してみて動けばこれは本当に大変な問題ですが ^^ 大体こういう場合SQL分が間違ってることが多いです。 一番気になるのはTable名に"をつけるのがちょっと。。。 私もWinでやってみましたがそんなのなかったと思いますが 頑張ってください。 いい結果が出たら教えてください。 | ||||
|
投稿日時: 2004-07-20 15:55
たびたびすみません。
System.out.print(query); を実行してみました。 出力の部分は insert into "USR" values('042007', 'aiueo' ,'aiueo') と表示されました。このSQLは多分間違っていないと思われます。 TABLEに""を付けることですがこれは、 コマンドプロンプトでも""を使わないとエラーになるので、 ダブルクォーテーションで囲ってます。私も変なソフトだなと思いながら使ってます。 Windows版ではこのソフトしかないので、どうしてもを使わざるを得ない状態だからです。 まだ解決できていませんが、もう少し試行錯誤してみます。 もし、ちゃんとできたら報告します! | ||||
|
投稿日時: 2004-07-20 16:20
insert into "USR" values('042007', 'aiueo' ,'aiueo')
このSQL分が間違ってなければWINのpsqlで実行してみてください。 ほかの問題だと判断され調べてみましょう。 実行済みでしたらすみません。 ちなみに'042007'はcharですか? intではないですよね。 順番も合ってますよね? [ メッセージ編集済み 編集者: MUSE 編集日時 2004-07-20 16:51 ] | ||||
1|2|3|4|5
次のページへ»
