問題タブ [dbexpress]
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.
delphi - TCustomClientDataset はバッチ モードで更新を適用できますか?
Firebird データベースに接続された DB Express TSimpleDataset があります。データセットに数千行のデータを追加したところで、今度は ApplyUpdates を呼び出します。
INSERT
残念ながら、これにより、各行を個別に試行するため、数千のデータベース ヒットが発生します。それは少しがっかりです。私が本当に見たいのは、データセットが数千のINSERT
ステートメントを含む単一のトランザクションを生成し、すべてを一度に送信することです。必要に応じて自分で設定することもできますが、まず、データセットまたは DBX フレームワークに組み込まれている方法があるかどうかを知りたいです。
mysql - SQL から表示される 1 つのフィールドのみ
2 つのフィールドを返す SQL ステートメントからフィールドを取得しようとすると問題が発生します
phpMyAdmin でクエリを実行すると、すべてのフィールドが正しく返されます。これは、SQL ステートメントが正しいことを意味します。
フィールドを 1 つだけ指定して SELECT ステートメントを実行すると、正しい情報が返されます。つまり、接続はOKです
これは機能します
これも機能します。bu は 1 つのフィールド (id_product) のみを返します。Fields.Count=1 !!!
これにより、次のエラー メッセージが返されます: フィールド サイズが無効です
ノート
JustSoftwareSolutionからダウンロードしたドライバ dbxopenmysql50.dll で Delphi 6 を使用しています。
TSQLConnection、TSLDataSet、TSQLClientDataSet を使用してみました。これら 3 つすべてが、同じ命令で同じエラー メッセージを返します。
テスト用に簡単なプログラムを作成しました。接続して必要な情報を取得するために使用する主な機能を次に示します。
delphi - dbexpress の firebird ドライバーを静的にリンクする
dbExprss を使用して Firebird に接続するゼロ dll 実行可能ファイルを展開することは可能ですか? もしそうなら、どのように?
原因 DBXFirebird を含めようとしましたが、実行可能ファイルには常に dbxfb.dll が必要です。
皆さん、ありがとうございました。
delphi - TSQLQuery - クエリからカーソルが返されない
現在、デルファイ プログラムの古い検索コードを取り除こうとしています。プログラムが使用している SQL サーバーに検索をプッシュしたいと考えています。このために、別の C# プログラムで使用するクエリと非常によく似たこのクエリを作成しました。
クエリは、SQL Management Studio または C# プログラムを使用して問題なく動作しますが、Delphi では「クエリからカーソルが返されませんでした」というエラーが発生します。
これがクエリです
奇妙なことの1つは、削除すると
「カーソルがクエリから返されませんでした」というエラーが表示されません。しかし、SQL Management Studio で 10 件の結果しか得られない検索文字列を使用すると、Delphi ではデータベース内のすべてのアイテムが取得され、検索では何も行われませんでした。
これは、Form、TSQLConnection、TSQLQuery、TDataSetProvider、および ClientDataSet だけを持つ単純なテスト プログラムでも発生します。
誰かがここで何が問題なのか教えてもらえますか? 他の環境ではクエリは問題なく動作するので、問題ないと思います。
助けてくれてありがとう。
delphi - TDBGrid - 同期または表示の問題
プログラムの 1 つで非常に奇妙な問題に直面しています。の後に、 、、およびTSQLConnection
の 2 つがあります。マスター/ディテール構造です。TSQLQUery
TDataSetProvider
TClientDataSet
TDataSource
詳細クエリには、マスター クエリのTDataSource
ルックアップ プロパティを 1 つ持つ追加の列があります。(「ProductID、ProductName、GroupName」のように、GroupName はマスター クエリから取得されると考えてください)
TDataSource
次に、詳細クエリをソースとして持つ DBGrid があります。ほとんどの部分が正しく表示されますが、マスター クエリからのルックアップであるフィールドが表示されないことがあります。この場合、DBGrid を下にスクロールし、もう一度上にスクロールすると、消えてしまうことがあります。上下にもう一度スクロールすると、表示されます。
デバッグのためにTDBLookupComboBox
、DBGrid と同じソースを追加しましたが、ComboBox は常にこのフィールドの正しい値を表示します。
この問題についてご協力いただきありがとうございます。
delphi - 接続に失敗すると、DBXPool によってメモリが破損する
DBXPool
で を使用DelegateConnection
すると、メソッドを呼び出したときTSQLConnection
に SQLServer が使用できない場合TSQLConnection.Open
、初回はタイムアウトになります。しかし、その後Open
再度呼び出すと、誤動作します。私の本番サービスでは、警告なしでプロセスを強制終了します。例外は発生せず、何も発生しません。プロセスが消えるだけです... テスト用に作成した単純なアプリでは、接続されていない場合でも、接続されDBXPool
ていると見なされます。TSQLConnection
何か提案を提供できるDBXPool
ように、誰かが問題を抱えていましたか?DelegateConnection
ありがとう!
<<< 7/23 編集 #2 >>>
以下の編集 #1 のコードを使用して、DBX フレームワークをトレースしました。次のメソッドは、DBXPool が使用されている場合にのみ呼び出されます。
(ユニット DBXDelegate)
... DBXPool が使用されているかどうかに関係なく呼び出される次のメソッドを呼び出します。
(ユニット DBXCommon)
コメントに注意してください。例外が発生した場合 (たとえば、間違ったユーザー名やタイムアウトなど)、次のコードは DBXPool が使用されていない場合にのみ呼び出されます。
(ユニット DBXCommon)
FOpen
DBXPool の使用時に設定が戻されないため、False
次回のDerivedOpen
呼び出し時に実行されるべきではないコードが実行され、AccessViolation とメモリの破損が発生します。RTL がそれをキャッチする場合もあれば、キャッチしない場合もあります (たとえば、本番サービスが Windows によって強制終了されます)。DBXDelegate をさらに深く追跡して、なぜ例外をキャッチせず、TDBXConnection.Close
.
<<< 7/23 編集 #1 >>>
Ken の提案に従って、簡単なサンプル アプリを添付します。私のサービスアプリはただ死んでいます。このアプリは、dbxmss.dll でアクセス違反を示しています (今日)。昨日は、2回目のクリックで例外が発生せず、「接続済み」がTrueとして返されました。私にはメモリの破損のように思えます...
SQLServer を使用する、または使用しないマシンでアプリをビルドして実行します。各ボタンを数回クリックします。どちらも最初のクリックでエラーを返します。「With DBXPool」は、2 回目のクリックで接続されたと認識します。運が良ければAVが見られるかも。「W/O DBXPool」ボタンは毎回失敗しますが、これは正しいことです。
Project1.dpr
Unit1.dfm
Unit1.pas
delphi - Delphi 2010:FirebirddbExpressエラーdbxfb4d14.dllを読み込めません
このグーグルコードサイトからChee-YangChauによるFirebird用のdbExpressドライバーをダウンロードしました。
Delphi 2010デモプロジェクトをロードして実行しようとすると、すぐにdllをロードできませんでしたというエラーが発生しました。
INIファイル
Delphiコード
ここで、dbxfb4d15.dllが見つからないというエラーが表示されます。
私は何が間違っているのですか?
delphi - TDataSet.UpdateRecord でエラーをキャッチするにはどうすればよいですか?
私のアプリケーションは、データ ソースとして QuantumGrid (v6.56) と TSimpleDataSet を使用しています。
問題: ユーザーが数値フィールドに数値以外の値を入力すると、例外がスローされます。コードは OnBeforePost ハンドラーに到達しません。
OnBeforePostの前に例外がスローされた場合、アプリケーションはどのようにしてエラーをキャッチする (そしてユーザーにメッセージを表示する) ことができるでしょうか?
スタックトレース:
mysql - DBExpressを使用してSSL経由でMySQLに接続する
SSL経由でMySQLサーバーに接続したい。具体的には、DbExpressでやりたいと思います。
私は過去にZeosLibを介してMySQLへのSSLを使用しました。これはうまく機能しましたが、Zeosでは、このプロジェクトの目玉である複数の結果セットを返すストアドプロシージャを実行できません。
Zeosでは、次のようなSSL接続を設定していました。
DBXで同様のことができるようです。
'encrypted'というパラメータを設定できるようですが、証明書の場所を構成する方法がわかりません。LibMySQL.dllは、暗号化された接続をセットアップするためにそれらを必要とします。
だから私の質問は:
- DBXでは暗号化された接続を設定できますか?
- もしそうなら、誰かがそれを行う方法を教えてもらえますか?:)
delphi - dbExpress の設計に関する質問
TSqlDataset にはcommandtextプロパティ (文字列) があるのに、TSqlQuery にはsqlプロパティ (tstrings) がある理由を知っている人はいますか?
SQLステートメントを検討してください
TSqlQuery を使用すると、sql[1] にアクセスしてクエリ内のテーブル名を動的に変更できますが、TSqlDataset を使用している場合 (双方向データセットが必要な場合は、データセットがプロバイダーに接続されているため)そこから tclientdataset に)、commandtext 文字列を文字どおりに設定する必要があります。上記の例は些細なことですが、SQL ステートメントがさらに複雑になると問題になる可能性があります。
更新:これまでのコメントと回答から判断すると、誤解されていたようです。コンポーネントの実行時パフォーマンスの向上はあまり気にしませんが (クエリに 1 秒かかる場合、1 ミリ秒が問題になるわけではありません)、プログラマー (つまり私) とプログラムを維持する能力については気になります。実際には、TSqlQuery に格納されている次のクエリがあります。
文字列の文字数は数えていませんが、255 文字以上あると確信しているため、クエリを単純な文字列に格納することはできません。特定の状況で、「and statuses.id = 3」または「and customers.id = 249」という行を追加して、表示されるデータの量をフィルタリングしたいと考えています。クエリが TStrings として格納されている場合は、基本クエリにダミー行「and 1 = 1」を追加し、必要に応じてこの行を更新できます。しかし、クエリは 1 つの長い文字列であり、その末尾に簡単にアクセスすることはできません。
私が現在行っていること (より良い解決策の代わりに) は、別の TSqlDataSet を作成し、その commandtext をデフォルトの TSqlDataSet の commandtext に設定し、追加の条件を追加することです。