- - PR -
tranzaction関係の不具合
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-01-30 23:10
初めまして。いつも拝見させて頂いているものです。現在ある不具合に遭遇し困っております。どなたかわかる方からのアドバイスを頂きたく投稿させていただきます。
その不具合とは件名の通りtranzactionに関わる問題です。具体的に私の現在実装している機能を書かせていただきますと、以下の処理です。 ・画面でファイルを選択する→ 選択されたファイルのデータを取得しテーブルにinsertする→ SPをコールする→ 戻り値により画面を分けるといった流れです。 ここで、ファイルのデータを取得してテーブルに代入しそのままSPをコールする処理を 記述しますと、エラーメッセージが表示されます。そのエラーとはinsertしたデータを読みにいけないとの内容のメッセージです。このエラーが出ていることから現在は画面を2つにして実現しております。1つ目の画面でファイルを選択し、そしてボタンが押下されたら、データをテーブルにinsertする。ここで正常にデータがテーブルにinsertされたら、次の2つ目の画面に進み、またここでボタンを押下するとSPをコールするといったものです。お客さんには何とかこの方法で納得はして頂けたのですが、やはりあまりお互いにスッキリとしていません。 そこで、こうした機能を過去に経験されたことのある方などからのアドバイスなどを頂たいと思っているところです。以上、よろしくお願いします。 |
|
投稿日時: 2004-01-30 23:25
まず、一つ突っ込み
tranzaction => transaction です。(^^; で、本題ですが、パッと思いつくのは、insertのSQLとSPのコールで トランザクションが別れてるのでは?ということですね。 別々のJDBCコネクションのインスタンスを使ってたりしませんか? # insertとSPコールの間で、コミットしてるなら関係ないですが。 的外れだったらごめんなさい。m(__)m |
|
投稿日時: 2004-01-30 23:50
Clusterさん、早速の書き込みありがとうございます。
そうでした、transactionでした、失礼しました。 仰られるとおり、現在insert、SPコールする場合に一度DBに繋ぎ、切断をするといった処理をしていまして別々のインスタンスを使っています。ただ、書かれた内容で1つ良くわからない点があります。それは、insertとSPの間でコミットをしていれば良いとのことなのですがそうなのでしょうか? といいますか、自分は現在connectionとクエリーオブジェクトはcloseしていますが、明示的にはcommitをしておりません。javaの本の中で更新処理をしている箇所を参考にしたのですが、上記の2つはしていましたが特別commitはしていなかったと思います。ひょっとしてそれがしていなかったために、データが読み込めずSPで止まってしまったのかもしれません。試してみようと思っているのですが、具体的にどのようにすれば良いのでしょう?データベースのconnectionを切る前にデータベース接続オブジェクトdbとしますと ・db.commitといった記述を追加すれば良いのでしょうか?それとも ・クエリーを新たに発行すれば良いのでしょうか? 確かこの方法を実行するとまた違ったtransactionエラーが発生していたと思うのですが・・・。 以上の点に関しまして、よろしくお願いします。 |
|
投稿日時: 2004-01-31 01:06
「データベース接続オブジェクト」とか、「クエリーオブジェクト」とか
言われてしますと、JDBC標準のAPIを指しているのか、独自クラスのことを 指しているのか判断に苦しみます。素直にクラス名やインターフェース名を 書いてくれた方が、みなさんアドバイスしやすいと思います。 まさか、半角英数字を打つのが面倒くさいって訳ではないですよね? さて、Commitの件ですが、デフォルトでは明示的に行う必要は有りません。 しかし、更新系の処理の場合は明示的に行うケースが多いようです。 この辺りはお手持ちの本に書いてあるはずです。書いてなければ読む本を 間違っていると思います。 |
1
