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

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

5
DriverManagerの代わりにDataSourceを使用するのはなぜですか?
Java JDBC仕様(vr。4)を読んでいて、次のステートメントに遭遇しました。 データソース—このインターフェースはJDBC2.0オプションパッケージAPIで導入されました。基になるデータソースに関する詳細をアプリケーションに対して透過的にすることができるため、DriverManagerよりも優先されます 私が理解しようとしているのは、aConnectionとaの違いDataSourceと、それが存在する理由です。つまり、上記のブロックは、データソースに関する詳細がアプリケーションに対して透過的であることを示していますが、ユーザー名、パスワード、URLなどのデータベースプロパティをプロパティファイルで外部化してから、DriverManagerを使用しても同じように機能しませんか? そして、DataSourceインターフェースは、プールなどできる接続を返す一般的な方法を持つためだけに作成されていますか?Java EEでは、アプリケーションサーバーはこのインターフェイスを実装し、アプリケーションは接続ではなくデータソースへの参照を持つようにデプロイされていますか?
89 java  jdbc  datasource 

16
悪名高いjava.sql.SQLException:適切なドライバーが見つかりません
データベース対応のJSPを既存のTomcat5.5アプリケーション(GeoServer 2.0.0が役立つ場合)に追加しようとしています。 アプリ自体はPostgresと問題なく通信するので、データベースが稼働していて、ユーザーがデータベースにアクセスできることはわかっています。私がやろうとしているのは、追加したJSPのデータベースクエリです。私はTomcatデータソースの例の設定例をほとんど箱から出して使用しました。必要なtaglibは適切な場所にあります。taglibrefがあればエラーは発生しないため、これらのJARが検出されます。postgresjdbcドライバーpostgresql-8.4.701.jdbc3.jarは$ CATALINA_HOME / common / libにあります。 これがJSPのトップです: <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <sql:query var="rs" dataSource="jdbc/mmas"> select current_validstart as ValidTime from runoff_forecast_valid_time </sql:query> 内側の$ CATALINA_HOME / confに/ server.xmlをから関連セクション、<Host>内で順番にあります<Engine>。 <Context path="/gs2" allowLinking="true"> <Resource name="jdbc/mmas" type="javax.sql.Datasource" auth="Container" driverClassName="org.postgresql.Driver" maxActive="100" maxIdle="30" maxWait="10000" username="mmas" password="very_secure_yess_precious!" url="jdbc:postgresql//localhost:5432/mmas" /> </Context> …

18
java.lang.ClassNotFoundException:Eclipseのcom.mysql.jdbc.Driver
コードの何が問題になっているのか、デバッグ中に多くのエラーが発生します。データベースmysqlに接続するシングルトンクラスのコードを書いています。 これが私のコードです package com.glomindz.mercuri.util; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; public class MySingleTon { String url = "jdbc:mysql://localhost:3306/"; String dbName = "test"; String driver = "com.mysql.jdbc.Driver"; String userName = "root"; String password = ""; private static MySingleTon myObj; private Connection Con ; private MySingleTon() { System.out.println("Hello"); Con= createConnection(); …

6
Java:PreparedStatementを使用してMySQLに複数の行を挿入する
Javaを使用して、MySQLテーブルに複数の行を一度に挿入したい。行数は動的です。昔は… for (String element : array) { myStatement.setString(1, element[0]); myStatement.setString(2, element[1]); myStatement.executeUpdate(); } MySQLがサポートする構文を使用するようにこれを最適化したいと思います。 INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...] しかし、PreparedStatement私はこれを行う方法を知らないので、要素arrayがいくつ含まれるかは事前にわかりません。でそれが不可能な場合PreparedStatement、他にどのようにしてそれを行うことができますか(そして配列の値をエスケープしますか)?

5
PreparedStatement setNull(..)
Java PreparedStatementは、Null値を明示的に設定する可能性を提供します。この可能性は次のとおりです。 prepStmt.setNull(parameterIndex, Types.VARCHAR); この呼び出しのセマンティクスは、nullパラメーターを指定して特定のsetTypeを使用する場合と同じですか? prepStmt.setString(null); ?

10
JDBCでDATETIME値0000-00-0000:00:00を処理する
やろうとすると例外が発生します(以下を参照) resultset.getString("add_date"); DATETIME値0000-00-0000:00:00(DATETIMEの準NULL値)を含むMySQLデータベースへのJDBC接続の場合、値を文字列としてではなく文字列として取得しようとしていますが、オブジェクト。 私はこれを回避しました SELECT CAST(add_date AS CHAR) as add_date これは機能しますが、ばかげているようです...これを行うためのより良い方法はありますか? 私のポイントは、生のDATETIME文字列が必要なので、そのまま自分で解析できるということです。 注:ここで0000が登場します:( http://dev.mysql.com/doc/refman/5.0/en/datetime.htmlから) 不正なDATETIME、DATE、またはTIMESTAMP値は、適切なタイプの「ゼロ」値( '0000-00-00 00:00:00'または '0000-00-00')に変換されます。 特定の例外はこれです: SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP. SQLState: S1009 VendorError: 0 java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 5 to TIMESTAMP. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at …
85 java  sql  date  jdbc 

6
java.sql.Timestampタイムゾーンは特定ですか?
UTCdateTimeをDBに保存する必要があります。 特定のタイムゾーンで指定されたdateTimeをUTCに変換しました。そのために私は以下のコードに従いました。 入力dateTimeは「2012122510:00:00Z」です。タイムゾーンは「Asia / Calcutta」です。 サーバー/ DB(oracle)は同じタイムゾーン(IST)「Asia / Calcutta」で実行されています。 この特定のタイムゾーンでDateオブジェクトを取得します String date = "20121225 10:00:00 Z"; String timeZoneId = "Asia/Calcutta"; TimeZone timeZone = TimeZone.getTimeZone(timeZoneId); DateFormat dateFormatLocal = new SimpleDateFormat("yyyyMMdd HH:mm:ss z"); //This date object is given time and given timezone java.util.Date parsedDate = dateFormatLocal.parse(date + " " + timeZone.getDisplayName(false, TimeZone.SHORT)); …
85 java  oracle  date  datetime  jdbc 

5
Statement.RETURN_GENERATED_KEYSを使用したPreparedStatement
一部のJDBCドライバーが返す唯一の方法Statement.RETURN_GENERATED_KEYSは、次のことを行うことです。 long key = -1L; Statement statement = connection.createStatement(); statement.executeUpdate(YOUR_SQL_HERE, Statement.RETURN_GENERATED_KEYS); ResultSet rs = statement.getGeneratedKeys(); if (rs != null && rs.next()) { key = rs.getLong(1); } 同じことをする方法はありPreparedStatementますか? 編集 私が同じことができるかどうか尋ねた理由はPreparedStatement、次のシナリオを考慮してください。 private static final String SQL_CREATE = "INSERT INTO USER(FIRST_NAME, MIDDLE_NAME, LAST_NAME, EMAIL_ADDRESS, DOB) VALUES (?, ?, ?, ?, ?)"; ではUSERテーブルがありますPRIMARY KEY …
83 java  jdbc 

8
JDBC接続に失敗しました、エラー:ホストへのTCP / IP接続に失敗しました
JavaクラスファイルをSQLServer2012に接続したい。SQLServer認証でログインしました。しかし、接続でエラーが発生します。 エラー:ホスト127.0.0.1、ポート1433へのTCP / IP接続が失敗しました。エラー:「接続が拒否されました:接続します。接続プロパティを確認します。SQLServerのインスタンスがホストで実行されており、ポートでTCP / IP接続を受け入れていることを確認します。ポートへのTCP接続がファイアウォールによってブロックされていないことを確認します。 。」。 私のコード--- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //1. Register your driver //2. get the connection object //Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=aysha","sa","admin"); Connection con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=aysha","user=sa","password=admin"); //"jdbc:sqlserver://127.0.0.1:1433; Instance=SQL2008;" + "databaseName=MB;user=sa;password=123;"; //Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=aysha","sa" , "password"); //3. Prepare a statement Statement stmt = con.createStatement(); //4. Write the query` String sql …
82 java  sql-server  jdbc 

5
Spring-Boot:接続の最大数などのJDBCプールプロパティを設定するにはどうすればよいですか?
Spring-Bootは非常に優れたツールですが、より高度な構成に関しては、ドキュメントが少しまばらです。データベース接続プールの最大サイズなどのプロパティを設定するにはどうすればよいですか? 春ブートサポートtomcat-jdbc、HikariCPおよびCommons DBCPネイティブには、それらはすべて同じように構成されていますか?


3
Oracle JDBC最適化:SpringブートアプリケーションでPreparedStatementキャッシングを有効にする
Oracleデータベースに接続されているSpring Boot RESTアプリケーションがあります。JdbcTemplateを使用してJDBCを使用しています。Oracleデータベースのプロパティは、次の3つのapplication.properties設定を通じて取得されます。 spring.datasource.url spring.datasource.username spring.datasource.password このアプリはHikariCPを使用しています。HikariCPのWebサイトから、JDBCドライバーがそれを実行するのに最適な設定であるため、このプールはPreparedStatementsをキャッシュしないことがわかりました。 ここで、これらを確実にするためにどこで何を指定しますか? Oracle JDBCドライバー(ojdbc7.jar)がPreparedStatementsをキャッシュすること。キャッシュできるPreparedStatementsの数をカスタマイズする方法はありますか? https://howtodoinjava.com/java/jdbc/best-practices-to-improve-jdbc-performance/から、 データベースが最大パケットサイズに設定されていること、およびドライバーがそのパケットサイズと一致していることを確認してください。より大きな結果セットをフェッチする場合、これにより、ドライバーとサーバー間で送受信される合計パケット数が減少します。 上記に準拠して、に必要な手順は何ですか Oracle DBサーバーのパケットサイズを確認する Oracle DBサーバーが最大パケットサイズに設定されているかどうかを確認する Oracle JDBCドライバーの(ojdbc8.jar)パケットサイズを設定します。 その他の(Oracle)JDBCパフォーマンス最適化のヒントをいただければ幸いです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.