問題タブ [jtds]
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.
sql-server-2008 - jTDSは、結果セットのメタデータでデータ型情報を誤って報告します(DATE列の場合、NVARCHARを報告します)
現在、Microsoft SQL Server2008に対するjTDSJDBCドライバー(1.2.5)は、DATE列のデータ型をNVARCHARとして誤って報告しているようです。
おそらく、以前のバージョンのjTDSとSQL Server(2005、2000)の両方で同じように動作します。
別のドライバー(たとえば、Microsoft独自のドライバー)に切り替えたり、jTDSドライバーにパッチを適用したりする必要のない回避策はありますか?
また、データ型情報を検索するためにデータディクショナリ(INFORMATION_SCHEMA.COLUMNSビューなど)に対してクエリを実行する必要がないようにします(SQLを取得するために「execsp_datatype_info 」の出力に対して相互参照することもできます)。データ型)
jTDSの未解決のバグをざっと見ても、これが修正されるかどうかはわかりません。
この質問への回答:JDBC-JTDSバグ?date and time(x)タイプの列の場合、これはSQLServer2005では発生しないことを示しているようです。
前もって感謝します。
java - ローカルMSSQLServerへの接続
ローカルのMSSQLServerがあり、JavaでJTDSを使用して接続しようとしています。接続文字列は次のとおりです。
また、サーバーのプロパティ:
名前:USER-PC \ SQLEXPRESS
ルートディレクトリ:c:\ Program Files \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL
エラーが発生しException in thread "main" java.sql.SQLException: Network error IOException: Connection refused: connect
ます。
どうすればこれを修正できますか?
jdbc - Azure、Oracle SQL Developer、および JDBC ドライバー
I have a SQL Azure database and Oracle SQL Developer. I want to connect to my Azure instance using Oracle SQL Developer. SQL Developer needs JDBC drivers to work with MSSQL databases. The jTDS driver works with SQL Developer but not with SQL Azure databases (apparently). The 4.0 version of the MS JDBC Driver works with SQL Azure but not with Oracle SQL Developer (apparently). Has anyone else been here and found a solution?
sql - JDBC 挿入/更新コマンドの問題点
これは単純な予約/予約テーブルに関するものです。キーは、timeOfBooking と dateOfBooking の anId です。
しかし、私がやろうとすると、次のコードで時間にリンクされた識別子について、if-not-exist を挿入し、if-exist を更新します。
jdbcレイヤーがこのエラーを返すことになります:
何が問題なのですか?
java - Java / jtds アプリケーションで SQL GO ステートメントをサポートするにはどうすればよいですか?
私は Java ベースの OSS アプリSqlHawkに取り組んでいます。これは、その機能の 1 つとして、サーバーに対してアップグレード SQL スクリプトを実行することです。
Microsoft は、 GOステートメントを使用してスクリプトをバッチに分割することを慣例にしています。これは良い考えですが、文字列で誤った一致を要求するだけです。
現時点では、私は非常に初歩的なことをしています:
これは機能しますが、引用された GO ステートメントやインデントの問題などによってつまずきがちです。
これを真に信頼できるものにする唯一の方法は、アプリに SQL パーサーを含めることだと思いますが、これを行う方法や、実際に信頼性が低下する可能性があるかどうかはわかりません (特に、このツールが複数の DBMS をサポートしている場合)。 .
この問題をどのように解決できますか? コード例は、ここで私にとって非常に役立ちます。
現在、スクリプトで見つかったバッチを実行するためにjtdsを使用しています。
java - 行を MySQL データベースに挿入する
JDTS ドライバーで Eclipse を使用しています。MySQL データベースに行を挿入しようとしています。接続とステートメントは問題なく生成されます (と思います)。ただし、executeUpdate メソッドを実行すると、null ポインター例外が発生します。
DB への接続を処理する DBclient クラスがあり、次にすべての関連情報を収集して挿入メソッドに提供する Uploader クラスがあります。
私の DBclient クラス:
}//DB クライアント
そして、私の Uploader クラス
}//アップローダ
Null ポインター例外は、DBclient クラスの insertToDB() メソッドからスローされます。
どんな助けでも大歓迎です。
java - 現在の行の例外をスローしない結果セットを介した getdate() クエリ
ここで問題があります。テーブルから現在の日付と列を取得したいのです。これまでの私のコードは次のとおりです。
上記のコードの3行目で、「ResultSetに現在の行がありません」という例外をスローします。コードの何が問題になっていますか? ResultSet の使い方を誤解しているのではないでしょうか?
回答ありがとうございます...
編集:答えた。以下の @Christopher からの投稿を参照してください。ありがとう
java - net.sourceforge.jtds.jdbc.cache.SimpleLRUCache によりメモリ リークが発生する
私は jtds 接続ドライバーを使用して非常に新しいです。約 2500 の大きな xml を読み取り、SQL クエリを作成して SQL サーバーに対して実行するアプリケーションを作成しました。特定の量の xml に達すると、プログラムの実行でメモリが不足することがわかりました。メモリ アナライザーを使用して Eclipse で phd ダンプ ファイルをチェックしたところ、net.sourceforge.jtds.jdbc.cache.SimpleLRUCache が大量のメモリを保持していることがわかりました。一度 SQL サーバーに接続し、すべてのクエリをフラッシュするまで接続を維持します。以下は、サーバーに対してクエリを実行するための私のコードです。net.sourceforge.jtds.jdbc.cache.SimpleLRUCache クラスへのハンドルを取得する方法がわかりません。これは、キャッシュをクリアすると思われる clear メソッドがあるためです。繰り返しますが、私は jtds ドライバーについてあまり詳しくありません。誰でもこれを解決するのを手伝ってもらえますか?
java - net.sourceforge.jtds.jdbc.Driver の setAutoCommit() の「set chained」にバグがありますか?
メソッド内のset chained
ステートメントと混乱していますsetAutoCommit()
net.sourceforge.jtds.jdbc.Driver
ソースコードは次のように述べています。
しかし、それは逆で、連鎖は autoCommit==false に対して OFF にすべきではないでしょうか?
私がこれに遭遇した理由は次のとおりです。
複雑な SQL を実行し、いずれかが失敗した場合はすべてロールバックする必要がある Java アプリを作成しています。
を使用してSybase接続を開きます
net.sourceforge.jtds.jdbc.Driver
setAutoCommit(false) を呼び出す
SQL1 を行う
ストアド プロシージャ 'MySP1' を呼び出す
ストアド プロシージャ MySP1' は私の管理下にありません
それは持っています
EXEC sp_procxmode 'dbo.MySP1','unchained'
SQL2 を行う
SQL2 が失敗した場合は、すべて (SQL1 を含む) をロールバックし、それ以外の場合はコミットします。
これを行うと、MySP1 から次のエラーが表示されます。
java - 「ストアド プロシージャ 'MySP1' は非連鎖トランザクション モードでのみ実行される可能性があります」というエラーを解決するにはどうすればよいですか?
複雑な SQL を実行し、いずれかが失敗した場合はすべてロールバックする必要がある Java アプリを作成しています。
- を使用してSybase接続を開きます
net.sourceforge.jtds.jdbc.Driver
- setAutoCommit(false) を呼び出す
- SQL1 を行う
- ストアド プロシージャ 'MySP1' を呼び出す
- ストアド プロシージャ MySP1' は私の管理下にありません
- それは持っています
EXEC sp_procxmode 'dbo.MySP1','unchained'
- SQL2 を行う
- SQL2 が失敗した場合は、すべて (SQL1 を含む) をロールバックし、それ以外の場合はコミットします。
これを行うと、MySP1 から次のエラーが表示されます。
ストアド プロシージャ 'MySP1' は、非連鎖トランザクション モードでのみ実行できます。'
SET CHAINED OFF
' コマンドは、現在のセッションで非連鎖トランザクション モードを使用します。
次のことを試しましたが、すべて役に立ちませんでした。
getConnection()
メソッド (アドバイス ソース)に渡される Properties オブジェクトに「chained=false」を追加します。おそらくプロパティをサポートして
net.sourceforge.jtds.jdbc.Driver
いないように思われるため、これは効果がありませんでした。chained
getConnection()
メソッド (アドバイス ソース)に渡される URL 文字列に「chained=false」を追加します。これも効果無かった
SET CHAINED OFF
の後に SQL を呼び出しますsetAutoCommit()
:これは効果がありませんでした。
setAutoCommit()
仕組みを調べたこれにより、ドライバーにバグがある可能性があると信じるようになりました。ただし、その場合、#1-#3 はバグを回避する必要があります。
setAutoCommit(true)
の代わりに呼び出されsetAutoCommit(false)
ます。これにより、非連鎖モードに関するエラーが修正されましたが、私が理解している限り、最初の SQL ステートメントはその時点までに既に自動コミットされているため、最後に SQL を 100% ロールバックできないことを意味します。