問題タブ [jdbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2942 参照

sql - データベースに依存しない jdbc テーブルのファイルへのインポート/エクスポート?

データベースに依存しないテーブル ダンプ/ハイドレートを行うことはまったく可能ですか? 複雑な制約はありません。私もdb固有の方法で解決しますが、より純粋なjdbcの方が優れています(impdp/expdpに頼りたくありません)。

0 投票する
3 に答える
5803 参照

java - SQL Server JDBC 信頼できる接続認証はどのように機能しますか?

SQL Server JDBC 信頼できる接続認証はどのように機能しますか? (つまり、信頼できる接続は、ログインした AD ユーザーを透過的でエレガントな方法で認証する方法と、データベース接続や既存の SQL Server ソリューションを使用せずに、Java でクライアント サーバー アプリケーションに同様の認証ソリューションを実装する方法を教えてください。 .)

前提 * Windows 2003 ドメイン内で作業している * JNI/JNA 経由で Wi​​ndows API にアクセスできる

0 投票する
5 に答える
14551 参照

java - MySQL プリペアード ステートメント キャッシングの使用方法

プリペアド ステートメントをキャッシュする MySQL の機能を利用するにはどうすればよいですか? 準備済みステートメントを使用する理由の 1 つは、同じ準備済みステートメントを再度使用する場合に、準備済みステートメント自体を複数回送信する必要がないことです。

上記の Java の例を実行すると、mysqld ログ ファイルに 5 組の Prepare コマンドと Execute コマンドが表示されます。ps 割り当てをループの外に移動すると、もちろん、1 つの Prepare コマンドと 5 つの Execute コマンドになります。接続パラメータ「cachePrepStmts=true」は、ここでは何の違いもないようです。
Spring と Hibernate を使用して同様のプログラムを実行する場合、送信される Prepare コマンドの数 (1 または 5) は、cachePrepStmts 接続パラメーターが有効になっているかどうかによって異なります。Hibernate は、cachePrepStmts 設定を利用するために準備済みステートメントをどのように実行しますか? 純粋な JDBC を使用してこれを模倣することは可能ですか?
これをMySQL Server 4.1.22およびmysql-connector-java-5.0.4.jarで実行していました

0 投票する
2 に答える
6710 参照

sql - oracle.sql.TIMESTAMPTZ と DbUnit の標準 JDBC クラスとの間の変換

Oracle 10g を実行していて、Type_Name の列があります

Java クラスに膨らませると、次のようになります。

しかし、DbUnit は、XML に書き込むために Oracle 固有のクラスを文字列に変換することを処理できません。これらの Oracle 固有のタイムスタンプから java.sql の何かに (たとえば、私の SELECT ステートメントで) 変換する簡単な方法があるかどうか疑問に思っています。

0 投票する
2 に答える
1770 参照

database - アプリケーションサーバーのデータソースでのJDBCシンレイヤー暗号化

Javaシンクライアントを使用してjdbc接続を透過的に暗号化する方法を示す興味深い記事に出くわしました。

http://javasight.wordpress.com/2008/08/29/network-data-encryption-and-integrity-for-thin-jdbc-clients/

ただし、アプリケーションサーバー(oc4jなど)のデータソースでこれを実現する方法を知りたいです。

0 投票する
14 に答える
110883 参照

java - 最後に挿入された行から値を取得するにはどうすればよいですか?

最後に挿入された行から値を取得する方法はありますか?

PKが自動的に増加する行を挿入していますが、このPKを取得したいと思います。PKのみがテーブル内で一意であることが保証されています。

JDBCとPostgreSQLでJavaを使用しています。

0 投票する
12 に答える
14523 参照

java - java.sql.Connection を閉じるときにスローされた例外をキャッチする必要がありますか

Connection.close()をスローする可能性がありSqlExceptionますが、私は常に、そのような例外を無視しても安全であると想定してきました (そして、それらを無視しないコードを見たことがありません)。

通常、私は次のように書きます。

または

質問は:

  1. それは悪い習慣ですか(そして、そのような例外を無視するときに誰かが問題を抱えていましたか)。
  2. いつConnection.close()例外がスローされますか。
  3. 悪い場合は、例外をどのように処理すればよいですか。

コメント:

例外を破棄するのは悪いことだとわかっていますが、接続を閉じるときにスローされる例外についてのみ言及しています (この場合、これはかなり一般的です)。

誰かがいつConnection.close()何かを投げることができるか知っていますか?

0 投票する
2 に答える
7332 参照

java - SSH の java.sql.Connection 拡張機能

SSH 接続を介してのみアクセスできるファイアウォールの背後に MySQL データベースがあります。このデータベースへの SSH 接続を可能にする java.sql.Connection の実装を知っている人はいますか?

0 投票する
3 に答える
4878 参照

oracle - Oracle DBLINK をコピーすると、Char(1) が Char(3) に変わるのはなぜですか?

2 つのデータベースがあり、CHAR 列を含む既存のテーブルをデータベース A からデータベース B に転送したいと考えています。

データベース A は Oracle 9i で、エンコーディングは WE8ISO8859P1 で、CHAR(1 char) 型の列が少なくとも 1 つあるテーブル「foo」が含まれています。データベース A はサード パーティのセットアップの一部であるため、テーブルを変更できません。

データベース B は私自身の Oracle 10g データベースであり、さまざまな理由から AL32UTF8 エンコーディングを使用しており、このデータベースに foo をコピーしたいと考えています。

データベース B からデータベース A へのデータベース リンクをセットアップします。次に、次のコマンドを発行します。

* select としてテーブルバーを作成 * from #link#.foo;*

データはうまくコピーされますが、列の型を確認すると、CHAR(1 文字) が CHAR(3 文字) に変換されていることに気付き、データベース B のデータをクエリすると、すべてスペースが埋め込まれます。 .

水中のどこかで、オラクルは自分のバイトと文字を混同していると思います。CHAR(1 byte) は CHAR(1 char) などとは異なります。私はそれについてすべて読みました。

データ型がパディングされた CHAR(3 文字) に変わるのはなぜですか? Oracle がこれを行うのを止めるにはどうすればよいですか?

編集: Oracle 9 と 10 の 2 つの特定のパッチレベル間で CHAR を転送する必要があるようです。これは実際にはバグのようです。わかり次第、更新を投稿します。その間: 私が説明したようにデータベース間で CHAR を移動しようとしないでください。VARCHAR2 は正常に動作します (テスト済み)。

編集 2:答えを見つけてここに投稿しました: Oracle DBLINK をコピーするときに Char(1) が Char(3) に変わるのはなぜですか? 私の問題は解決されたので、残念ながら私は自分の答えを受け入れることができません。

0 投票する
2 に答える
21074 参照

java - 特定のJDBC接続のデータベースタイプを判別する方法は?

3つのデータベース(Oracle、sybase、MS-Server)のストアドプロシージャ/関数を返す結果セットを処理する必要があります。手順/機能は一般的に同じですが、Oracleでは呼び出しが少し異なります。

JDBCはこれを処理する一般的な方法を提供していないため、コード内のさまざまなタイプのDBを区別する必要があります。接続が与えられましたが、DBがオラクルであるかどうかを判断するための最良の方法がわかりません。ドライバー名を使用することもできますが、よりクリーンな方法を見つけたいと思います。