カテゴリ:プラグイン障害・課題・制限
DBViewerプラグインと言いながら、実は編集できるように
実装を考えているが、大きな問題にぶちあたってしまった。 テーブルの内容(データ)をエクセル風(TableViewer)に 表示させるのはそれほど難しくはない。 大きな問題とは、 「どうやって指定された"行"を正しく更新させるか?」である。 案1:CachedRowSetを使用する 長所 ・正確な行を更新することができる ・DBとの接続状態を維持する必要がない 短所 ・実装してみたが、正常に動作せず。 ・ネットで調べてみたところ、MySQLおよびOracleとの相性?が悪いらしい。 ・RDBの種類によって動作するものと動作しないものがありそう。 ・JDBC2.0の機能 案2;ResultSetを使用する 長所 ・正確な行を更新することができる 短所 ・DBと接続状態を保持する必要がある(同時に開くとDBのコネクションが足りなくなる) 案3:プライマリーキーを使用する 長所 ・プライマリーキーがあるテーブルのみ正確に更新できる。 短所 ・プライマリーキーが無いと更新できない。 「某DBプラグイン」を試してみると、 プライマリーキーが無いテーブルを更新する場合は、すべての項目をキーにして 更新処理を実行している。 この場合、全く同じレコードが複数存在する場合、そのレコードがすべて更新されてしまう。 案4:ROWID(行を特定する識別子)を使用する 長所 ・正確な行を更新することができる ・DBとの接続状態を維持する必要がない 短所 ・Oracleでしか?サポートしていない (MySQLでは使用できない) どの選択肢も、短所があり、それが機能制限となってしまうものである。 個人的には、案1のCachedRowSetを使った更新方法を選択したいのであるが、、、、 ○Oracle限定のプラグインにする? ○プライマリーキーがあるテーブルの更新可能にする? ○編集画面(実際にはEditor)を開いている間、DB接続を維持する? ○もう少しCachedRowSetを検証してみる? うーん頭が痛い;; どなたか他にいい方法があれば、ぜひアドバイスをお願いしますー^^ お気に入りの記事を「いいね!」で応援しよう
[プラグイン障害・課題・制限] カテゴリの最新記事
ExcelでOracle,MySQLのデータを取得/更新するなら、ExcelDBToolをお勧めします。
データ取得、更新、削除することだけではなく、複数のSQLを実行して、結果を 一括Excelの各シートに出力することもできます。データ作成の機能を使って、 氏名、住所、電話など60種類以上のダミーデータも作成できます。 作成したデータを直接DBに登録して、シート名とテーブル名が一致すれば、 一括で複数テーブルのデータもExcelに取得できます。 (2013.12.06 16:30:59) |
|