問題タブ [adoconnection]
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 - Delphi の TADOConnection はスレッドセーフですか?
多くの異なるスレッドから同時に同じ SQL Server データベースにアクセスする必要がある Delphi 7 アプリケーションを作成しています。
単一の共有 TADOConnection を使用できますか、それとも各スレッドが独自に作成する必要がありますか?
asp-classic - この ASP 接続文字列の何が問題になっていますか?
私はこれで私のロープの終わりにいます。とてもシンプルなはずです。この接続文字列の何が問題なのかを知る必要があります。
その行を実行すると、次のエラーが発生します。
[Microsoft][ODBC Driver Manager] データ ソース名が見つからず、既定のドライバーが指定されていません
ServerName が起動していて接続を受け入れていること、InitialDB が存在していること、ユーザー ID とパスワードがデータベースに対して有効であることを知っています。私は何が欠けていますか?
delphi - スレッドで TADOConnection を使用してもよい
TCPip サーバー アプリケーションを作成しました。アプリケーションには 1 つのグローバル TADOConnection があります。このグローバル ado 接続は、メイン スレッド クエリとスレッド プロセス内の両方で使用されます。
これでよろしいですか?ADOConnection には、複数のクエリを同時に処理するメカニズムが組み込まれていますか?
私のアプリケーションは、テスト環境 (2-5 接続) で動作します。しかし、本番環境にデプロイすると、ADOConnection にリンクされた TADOQuery がオープンに設定されている時点で、「説明できない」アクセス違反が発生します。
ADOConnection を使用する必要がありますか、それともすべてのクエリが独自にデータベースに接続する必要がありますか (これはおそらくリソースのコストが少し高くなります)。
mysql - Delphi 2010 で Unicode 文字を MySQL に挿入する
Delphi 2010 と TADOConnection を使用して、Unicode Char の値を MySQL データベースに挿入しようとしていますが、うまくいきません。
ODBCとの接続
SQL コマンド:
で直接挿入してみました
データベースでは「ロシア語: ??????? ????」となるだけです。
ここで提案されている方法も試してみました:
http://www.3delite.hu/Object%20Pascal%20Developer%20Resources/delphiunicodemysqltutorial.html
これをコードで作成しても、設計時にパラメーターを追加した場合にのみ、まったく機能しませんが、データベース全体で同じ結果になり、疑問符が全体に表示されます。
delphi - delphiadoconnectioneconvertエラー
EConvertErrorを発生させている次のコードがあります-「TAdoConnectionをTAdoConnectionに割り当てることができません」
何が間違っているのか理解できません。TAdoConnectionまたはTPersistentに変数wTmpADOConnをキャストしようとしましたが、成功しませんでした。
オブジェクトをコピーするには、Assignプロシージャを使用できることを知っています。
コードはDelphi7で書かれています。
LE:ありがとうございます。問題は、オブジェクトが共有オブジェクトであり、別のADOConnectionへの参照であるということです。そして、参照を解放せずに解放できるように、自分のオブジェクトが必要です。ロジックは複雑で、その参照からオブジェクトを作成するためのメカニズムが必要です。
delphi - インデックスがADOQueryの範囲外でした-非常にランダム
私Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
のウェブサイトでランダムにメールが届きます。強制テストでも一般テストでもこのエラーを再現することはできず、やや混乱を招きます。
スタックトレースで確認できることから、データセットを開いて値を取得しようとすると、ランダムに発生します。スタックトレースは、この関数を呼び出すときにエラーが発生したことを示しています。
私が言ったように、これでエラーを再現することはできず、実行するクエリでランダムに発生するようです。エラーを再現するために接続を非アクティブに設定して接続を閉じようとしましたが、できません。
誰かアイデアはありますか?
編集:スタックトレースをより綿密に調べた後、問題を引き起こしているようです:
selCursor.Active
EDIT2:前のselCursor.Closeを確認するためにコードにチェックを入れました。スタックトレースは、閉じるものがないことを示しています。
delphi - adoconnectionのユーザー名とパスワード
フォームにadoconnectionがあり、Access 2010(accdbデータベース)を使用しています
DBのアクセスにパスワードを設定しました
このパスをDelphiに設定しようとすると、問題が発生します。
1:Delphiはユーザー名を尋ねますが、ユーザー名はありません。2:adoでパスワードを設定すると(管理者ユーザー名または空白のユーザー名で)、このエラーが表示されます:
プロバイダーの初期化中にエラーが発生したため、テスト接続に失敗しました。アプリケーションを起動できません。ワークグループ情報ファイルが見つからないか、別のユーザーによって排他的に開かれています。
- このエラーを受け取ったときにDBファイルが開いていません。
delphi - クラスTADOConnection/TADOTableが見つかりません
さて、DataModuleフォームを作成し、すべてのデータベースコンポーネントをそこに移動して、デザイン時のフォームを少しクリーンアップすることを決定するまで、アプリケーションは正常に機能していました。Delphi XE2 Update 1と、これらのコンポーネント、TADOConnection、TADOTable、TADOQuery、TADOCommandを使用しています。メインフォームではなく、DataModuleフォームで上記の名前のコンポーネントを使用してアプリを初めて実行しようとするとすぐに、DPRからのこの行が実行されたときにエラーが返されるようになりました。
Application.CreateForm(TDataModule1, DataModule1);
発生したエラーは、クラスTADOCOnnectionが見つかりません。。TADOConnectionを削除してDataModuleフォームに再度追加したので、別のエラーが発生します。クラスTADOTableが見つかりません。TADOTable
、しかし、これは、DataModuleで作成順序が変更され、フォームで作成される最初のオブジェクトがaであるためだと思います。
uses
DataModuleからの私の句は次のとおりです。
uses System.SysUtils, System.Classes, Data.Win.ADODB, Data.DB;
このエラーを克服するためにuses句にADODBとDBを含めると述べている他の投稿を読みましたが、それは役に立たないようです。
私の完全なDPRファイルは次のとおりです。
DataModuleを作成するDPRファイルから行を削除して、メインフォームで手動で実行しようとしましたが、同じエラーメッセージが表示されると変更されます。
すべてのコンポーネントをメインフォームに戻す以外に、次に何を試すべきかわかりません。XE2ではDataModuleフォームが以前のバージョンのDelphiと同じように機能しません。また、コンポーネントがメインフォームにあるときに、同じTADOConnectionおよびTADOTableクラスが見つからないというメッセージが表示されないのはなぜですか。
どんな考えや洞察も大歓迎です。
ジェームズ
database - 新しいスレッドを作成する代わりに、データベース接続をスレッドと共有する
試す前にこれを確認したかったのです。スレッド内のデータベースからデータをフェッチする必要があるいくつかのスレッドに取り組んでいます。現在、私が見たすべてに基づいて、スレッド内から新しいデータベース接続 (TADOConnection) を作成しています。スレッドの外部のどこかから接続オブジェクトを取得できれば素晴らしいことを除いて、すべて正常に動作します。基本的に、スレッドの実行ごとに新しい TADOConnection を作成し続けたくありません。
スレッドの外側で TADOConnection プロパティを公開して (スレッドの作成時に割り当てる)、その接続をスレッド内で使用することはできますか? あとは、スレッド内で TADODataSet を作成し、その接続をこの TADOConnection に割り当てるだけです。特に、スレッドで ADO を操作するときに CoInitialize と CoUninitialize を呼び出す必要があるため、これについては少し疑問があります。