タグ付けされた質問 「jdbc」

JDBC(Java DataBase Connectivity)は、Javaプログラミング言語を使用してSQLステートメントを実行することにより、SQLデータベースサーバーとの対話を可能にする基本APIです。

15
ステートメントとPreparedStatementの違い
準備済みステートメントは、ステートメントのやや強力なバージョンであり、常にステートメントと同じくらい速くて簡単に処理できる必要があります。 準備済みステートメントはパラメーター化されている可能性があります ほとんどのリレーショナルデータベースは、4つのステップでJDBC / SQLクエリを処理します。 着信SQLクエリを解析する SQLクエリをコンパイルする データ収集経路を計画/最適化する 最適化されたクエリを実行する/データを取得して返す ステートメントは常に、データベースに送信される各SQLクエリについて上記の4つのステップを実行します。準備済みステートメントは、上記の実行プロセスのステップ(1)〜(3)を事前に実行します。したがって、Prepared Statementを作成すると、いくつかの事前最適化がすぐに実行されます。その結果、実行時のデータベースエンジンの負荷が軽減されます。 今私の質問はそれです-「Prepared Statementを使用する他の利点はありますか?」
222 java  jdbc 

5
SpringのJDBCTemplateを使ってIN()SQLクエリを効果的に実行する方法は?
SpringのJDBCTemplateでIN()クエリを実行するよりエレガントな方法があるかどうか疑問に思いました。現在私はそのようなことをしています: StringBuilder jobTypeInClauseBuilder = new StringBuilder(); for(int i = 0; i < jobTypes.length; i++) { Type jobType = jobTypes[i]; if(i != 0) { jobTypeInClauseBuilder.append(','); } jobTypeInClauseBuilder.append(jobType.convert()); } IN()クエリの句を作成するためだけに9行ある場合、これは非常に苦痛です。準備されたステートメントのパラメーター置換のようなものが欲しい
177 java  sql  spring  jdbc  jdbctemplate 

6
準備済みステートメントでの「like」ワイルドカードの使用
mysqlデータベースクエリを実行する準備済みステートメントを使用しています。そして、一種のキーワードに基づく検索機能を実装したいと思います。 そのため、LIKEキーワードを使用する必要があります。また、前に準備済みステートメントも使用しましLIKEたが、次のコードからどこに'keyword%'? 私は直接にそれを使用することができますpstmt.setString(1, notes)ように(1, notes+"%")またはそのような何か。私はこれに関する多くの投稿をウェブ上で見ていますが、良い答えはどこにもありません。 PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes like ?"); pstmt.setString(1, notes); ResultSet rs = pstmt.executeQuery();

13
PreparedStatementのSQLを取得するにはどうすればよいですか?
次のメソッドシグネチャを持つ一般的なJavaメソッドがあります。 private static ResultSet runSQLResultSet(String sql, Object... queryParams) これは、接続を開き、PreparedStatementsqlステートメントとqueryParams可変長配列のパラメーターを使用してを構築し、それを実行し、ResultSet(にCachedRowSetImpl)をキャッシュし、接続を閉じ、キャッシュされた結果セットを返します。 エラーをログに記録するメソッドに例外処理があります。デバッグに非常に役立つので、SQLステートメントをログの一部として記録します。私の問題は、String変数をsqlログに記録すると、テンプレートステートメントが実際の値ではなく?でログに記録されることです。実行された(または実行しようとした)実際のステートメントをログに記録したい。 だから...によって実行される実際のSQLステートメントを取得する方法はありますPreparedStatementか?(なければ、それを自分自身を構築する。私はアクセスする方法を見つけることができない場合PreparedStatement's、私はおそらく私の中でそれを自分自身を構築終わるだろう、SQLをcatchES。)

16
非同期のjdbc呼び出しは可能ですか?
データベースへの非同期呼び出しを行う方法はあるのでしょうか。 たとえば、処理に非常に長い時間がかかる大きなリクエストがあるとします。リクエストを送信し、リクエストが値を返すときに(リスナー/コールバックなどを渡すことによって)通知を受け取りたいと考えています。データベースが応答するのを待つのをブロックしたくありません。 スレッドのプールを使用することは、スケーリングしないので解決策であるとは思いません。大量の同時リクエストの場合、これは非常に多数のスレッドを生成します。 この種のネットワークサーバーの問題に直面しており、select / poll / epollシステムコールを使用して、接続ごとに1つのスレッドが存在しないようにすることで解決策を見つけました。データベースリクエストで同様の機能を使用する方法を知りたいだけですか? 注:FixedThreadPoolを使用するのが適切な回避策である可能性があることは承知していますが、(余分なスレッドを使用せずに)本当に非同期のシステムを開発した人がいないことに驚いています。 **更新** 実際の実用的なソリューションがないため、私は自分でライブラリ(finagleの一部)を作成することにしました:finagle-mysql。それは基本的にmysql要求/応答をデコード/デコードし、内部でFinagle / Nettyを使用します。接続数が非常に多い場合でも、非常によく拡張されます。

28
ORA-12505、TNS:リスナーは現在、接続記述子で指定されたSIDを認識していません
Windows 7 64ビットOSにOracle 11g Express Editionリリース2をインストールし、JDBCプログラムを実行しようとすると、次のエラーが発生しました。 java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412) at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531) at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.jlcindia.jdbc.JDBCUtil.geOracleConnection(JDBCUtil.java:28) at Lab3O.main(Lab3O.java:15) Caused by: oracle.net.ns.NetException: …
154 oracle  jdbc 


5
JDBCでtry-with-resourcesを使用するにはどうすればよいですか?
JDBCを使用してデータベースからユーザーを取得する方法があります。 public List<User> getUser(int userId) { String sql = "SELECT id, name FROM users WHERE id = ?"; List<User> users = new ArrayList<User>(); try { Connection con = DriverManager.getConnection(myConnectionURL); PreparedStatement ps = con.prepareStatement(sql); ps.setInt(1, userId); ResultSet rs = ps.executeQuery(); while(rs.next()) { users.add(new User(rs.getInt("id"), rs.getString("name"))); } rs.close(); ps.close(); con.close(); } catch …

10
MySQLのURL、ホスト、ポート、ユーザー名を確認するにはどうすればよいですか?
MySQLのユーザー名を見つける必要があります。MySQLコマンドラインクライアントを開くと、パスワードの入力を求められるだけです。ユーザー名を覚えていません。JDBCとの接続には、URL、ホスト、ポート番号が必要です。これらはどこにありますか?

12
「0000-00-00 00:00:00」はjava.sql.Timestampエラーとして表すことができません
日付を含むデータベーステーブルがあります (`date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'). MySQLを使用しています。プログラムから、データが日付なしでデータベースに渡されることがあります。したがって、日付の値は0000-00-00 00:00:00 、テーブルデータがエラーを発生する日付列で呼び出されたときに自動的に割り当てられます ...'0000-00-00 00:00:00' can not be represented as java.sql.Timestamp....... データを挿入するときに日付にnull値を渡そうとしましたが、現在の時刻に割り当てられます。 ResultSetテーブル構造を変更せずにを取得する方法はありますか?
141 java  mysql  jdbc  timestamp 


4
JPAとJDBCの違いは何ですか?
私はJava EEを学習しています。同じためにGlassfishを使用してEclipseをダウンロードしました。Java EE 5のすべてを知るためにいくつかの例を見たり、Oracleのドキュメントを読んだりしました。データベースへの接続は非常に簡単でした。動的Webプロジェクトを開き、セッションEJBを作成し、EntityManagerを使用して、getメソッドを使用して、格納されたデータテーブルにアクセスできました。 次のプロジェクトでは、単純なクラスを作成し、DBテーブルにアクセスしました。私が遭遇した最初の問題は、PersistenceUnit属性がEJB、サーブレットなどによってのみ認識され、単純なJavaクラスでは認識されないことでした。それで、私はEntityManager方法を使用できませんでした(または私はできますか?) 「JDBC」の方法で行くように頼まれました。私が遭遇した最初の問題は、DBへの接続を取得することでした。これはすべてハードコーディングする必要があるようです。データベース接続を簡単に構成できるpersistence.xmlがありました。DB用のドライバーのセットアップも簡単でした。また、JDBCには、テーブルエンティティにアクセスするためのget / setメソッドはありません。 JDBCとの関係でJPAと永続性を理解するにはどうすればよいですか?JPAは何を考えていましたか?なぜset / getメソッドがあるのですか?誰かがこれら2つの本質に光を当てることはできますか?「専門用語」のない賛否両論は何ですか?リンクもいくつか提案してください。JPAとJDBCの違いをGoogleで簡単に検索したところ、フォローできない「用語」に満ちたサイトがいくつか見つかりました:(
119 java  jpa  jdbc 


3
java:comp / env /は何をしますか?
JNDIファクトリーBeanを接続するときに、いくつかのエラーを理解しようとするのに、あまりにも多くの時間を費やしました。問題はこれの代わりにそれであることが判明しました... <bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/loc"/> </bean> 私は実際にこれを書いた... <bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="jdbc/loc"/> </bean> 私はjava:comp/env/おそらくいくつかの環境変数を参照し、最終的に私のコンテキストファイルが見られるようにすることを推測します。唯一の違いはjava:comp/env/です。専門家の口から、それは何をしますか? なければjava:comp/env/価値の接頭辞、私が言ったエラーになるだろう「名前のJDBCは、このコンテキストでバインドされていない」と。
116 spring  jdbc  jndi  factory 

13
java.sql.SQLException:-ORA-01000:オープンカーソルの最大数を超えました
ORA-01000 SQL例外が発生します。それに関連するクエリがあります。 最大オープンカーソルはJDBC接続の数に正確に関連していますか、それとも、単一の接続用に作成したステートメントと結果セットオブジェクトにも関連していますか?(接続プールを使用しています) データベース内のステートメント/結果セットオブジェクトの数(接続など)を構成する方法はありますか? シングルスレッド環境では、メソッドローカルステートメント/結果セットオブジェクトの代わりにインスタンス変数ステートメント/結果セットオブジェクトを使用することをお勧めしますか? 準備されたステートメントをループで実行すると、この問題が発生しますか?(もちろん、sqlBatchを使用することもできます)注:ループが終了するとpStmtが閉じます。 { //method try starts String sql = "INSERT into TblName (col1, col2) VALUES(?, ?)"; pStmt = obj.getConnection().prepareStatement(sql); pStmt.setLong(1, subscriberID); for (String language : additionalLangs) { pStmt.setInt(2, Integer.parseInt(language)); pStmt.execute(); } } //method/try ends { //finally starts pStmt.close() } //finally ends 単一の接続オブジェクトでconn.createStatement()およびconn.prepareStatement(sql)が複数回呼び出されるとどうなりますか? Edit1: 6. Weak / …
115 java  oracle  jdbc 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.