問題タブ [resultset]
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.
javascript - javascript-結果セットのデータ型varchar(max)のフィールドにアクセスする
javascriptアプリ内で、SQL Server 2005でsprocを呼び出しています。このsprocは、bigint、varchar(20)、およびvarchar(MAX)の3つのタイプの列を持つ結果セットを返します。
sprocを呼び出して結果を読み取る場合、例外はスローされません。結果セットを列挙する場合:
myStringの値を調べるとき、その値は私が期待するものではありません。
フィールドの真の価値を取得する方法はありますか?
getString()以外の別のメソッドを呼び出すのではないでしょうか?
java - java.sql.ResultSet への ColdFusion クエリ
「undocumentation」を調べたところ、 acoldfusion.sql.QueryTable
から aを作成する方法がわかりますResultSet
が、その逆はわかりません。java.sql.ResultSet
では、 ColdFusion ( coldfusion.sql.QueryTable
) クエリ オブジェクトからを抽出するにはどうすればよいでしょうか。
php - 有効な MySQL 結果リソースを確認しています
私はこのコードを持っています:
$someQuery
フォームに書き込む任意のクエリです。mysql_errno は、エラーを含む mysql クエリを作成したときにケースをキャッチします。しかし、「テーブル名から削除」クエリを実行すると、もちろんエラーではありませんが、同時に mysql_fetch_assoc が「警告: mysql_num_rows(): 提供された引数は有効な MySQL 結果ではありません」で失敗することがわかりました。 /blah/blah/file.php 行 x のリソース」。
私はマニュアルでそれを探してみました (多分私は盲目です...) しかし、 $res が有効な MySQL 結果リソースであるかどうかを確認するために使用できる関数はありますか?
java - Java ResultSet getString の奇妙さ?
これは私を困惑させました。
私は java.sql.ResultSet を持っており、次のように文字列値を引き出しています。
rs.getString("AddressLine1") をデバッグして検査すると、デバッガーは 30 文字の文字列を取得したと表示します: "ATTN: ACCOUNTS PAYABLE" (末尾のスペースは削除されています)。ただし、この行の直後にアドレス オブジェクトを調べると、addressLine1 が 30 文字のスペースまたはその他の空白の文字列であることが報告されています。
rs.getString("AddressLine2") をデバッグして検査すると、デバッガーは 23 文字の文字列を取得したと表示します: "10 Something Street" (末尾のスペースは削除されています)。この行の直後に住所オブジェクトを調べると、 addressLine2 is nullと報告されています。
私を本当に悩ませているのは、これがすべての値で発生しているわけではなく、ほんの一部であるということです。
私のアドレス クラスは、完全にばかげたゲッターとセッターを含むプレーンな古い文字列を格納しています。本当に、約束します!これは、他のダム プロパティを削除してカット アンド ペーストしたものです。
ここで一体何が起こっているのですか?それはある種の奇妙なスコープの問題ですか?それはある種の文字エンコーディングですか?
PS - 私は春の SimpleJdbcTemplate を使用しています。私が話している「疑似データベース」は、ODBC (sun.jdbc.odbc.JdbcOdbcDriver) 経由でアクセスしている ProvideX です。
java - ResultSet にデータを入力する簡単な方法
ResultSet をモックしたい。真剣に。ResultSet からのデータを解析している 1 つの大きな複雑なコードをリファクタリングしています。自分のコードを同じように動作させたいと思っています。したがって、これをテストできるように、リファクタリングされる部分の単体テストを作成する必要があります。
グーグルで調べた後、私は2つのアイデアを思いつきました:
- EasyMock を使用して、長いモック シーケンスを記述します。非常に悪い解決策: 初期データを追加するのが難しい、データを変更するのが難しい、大きなテストのデバッグの約束。
- Apache Derby または HSQLDB を使用してメモリ内 DB を作成し、ファイルまたは文字列配列から入力し、魔法の InMemoryDBUtils.query(sql) でクエリを実行します。次に、その ResultSet を使用します。残念ながら、テストを高速に作成するための魔法の InMemoryDBUtils は見つかりませんでした :-)。IBM の記事「Derby を使用した永続性の分離単体テスト」は、私が必要としているものについては問題ないように思えますが...
2 番目のアプローチは、いくらか簡単で、はるかにサポートしやすいように見えます。
そのようなモックを作成するためのアドバイスはありますか? (もちろん、医者にもかかわらず:-)?眉毛に特効薬があるのでしょうか。おそらく、DBUnit はこのためのツールですか?
java - JDBC ResultSetをスタブ/モックしてJava5と6の両方で動作させる方法は?
JDBCステートメントなどを使用して動作するクラスの一部をテストしていますが、JDBCResultSetインターフェイスで問題が発生しました。
ソフトウェアはJava5とJava6の両方で実行する必要があるため、テストも両方のバージョンで実行する必要があります。残念ながら、Java 6は、一連の新しいクラス/インターフェースを返す一連の新しいメソッド(まだ大したことではありません)を導入しました。これにより、事態はさらに困難になります。(FrankCarverのPunchBarrelを参照してください-たとえば、Java 6はJDBCを壊します)
これらのバージョンの違いを見つける前に、スタブとモックのどちらかを検討しましたが、ResultSetにはスタブを操作するのがより自然な内部状態(現在の行が処理される)があるため、スタブになりました。
しかし、新しいメソッドをとして導入しないpublic NClob getNClob(int columnIndex)
と、クラスはJava 6で壊れます。クラスを導入すると、Java5で壊れます。
mockito(たとえば)コールバックを使用して、状態が戻り値に反映されるようにすることはできますが、他の誰か(おそらくもっといいアイデア)がありますか?
java - 接続が破損した後の ResultSet の動作
JDBC 呼び出しを行っていて、データベースからResultSet
. しかし、ネットワークの問題により、データベースとの接続が失われました。
( Connection
、Statement
およびResultSet
DB で閉じられていません)。を反復処理できResultSet
ますか?
java - Java JDBC 遅延ロードされた ResultSet
JDBC クエリを実行して取得した ResultSet を遅延ロードする方法はありますか? 事前にではなく、要求したときに各行をロードしたい。
java - JDBC で Connection、Statement、PreparedStatement、および ResultSet を閉じるタイミング
JDBC コーディングに関するいくつかの質問:
- 単一のクライアント アプリケーションの場合、接続プールは必要ですか?
Connection
最初に を作成し、アプリケーションが終了するまで閉じずにそのままにしておくのは良い考えですか? なんで?PreparedStatement
に関連付けられているConnection
場合、各クエリの後に接続が閉じられない場合は、 を有効にPreparedStatement
して他の方法で再利用してみませんか?- 各クエリを作成する場合
PreparedStatement
、データベースはそれが同じであることを認識しPreparedStatement
、最初の以降の不要なアクションを無視しますか? PreparedStatement
一度作成して何度も再利用するステートメントではありませんか? はいの場合、なぜ毎回閉じる必要があるのですか?
close()
への呼び出しがリソースを解放することを知っています。しかし、後で使用することがわかっている場合は、なぜそれを解放して、後で再度要求するのでしょうか?
マルチクライアント アプリケーションはどうでしょうか。接続プールが必要なのでStatement
、PreparedStatement
毎回接続を作成して閉じる必要がありますか?