記事"SQL と MQL5:SQLite データベースとの連携"についてのディスカッション - ページ 3 12345 新しいコメント xronx 2017.09.02 23:42 #21 テストスクリプト://--- 含まれるもの #include <MQH\Lib\SQLite3\SQLite3Base.mqh> //--- 変数 CSQLite3Base sql3; CSQLite3Table testTable; CSQLite3Cell testCell; //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ void OnStart() { //--- データベース接続を開く if(sql3.Connect("test.db3")!=SQLITE_OK) {Print(sql3.ErrorMsg()); DebugBreak(); return;} else Print("CONNECTED TO DB."); //--- テーブルを囲む if(sql3.Query("DROP TABLE IF EXISTS [test]")!=SQLITE_DONE) {Print(sql3.ErrorMsg()); DebugBreak(); return;} if(sql3.Query("CREATE TABLE [test] ([i] INT)")!=SQLITE_DONE) {Print(sql3.ErrorMsg()); DebugBreak(); return;} else Print("TABLE CREATED."); //--- 値を挿入する if(sql3.Query("INSERT INTO [test] VALUES(1)")!=SQLITE_DONE) {Print(sql3.ErrorMsg()); DebugBreak(); return;} else Print("VALUE \"1\" INSERTED."); //--- テーブルの行数を数える if(sql3.Query(testTable,"SELECT COUNT(*) FROM [test]")!=SQLITE_DONE) {Print(sql3.ErrorMsg()); DebugBreak(); return;} testTable.Cell(0,0,testCell); Print("RETRIEVED DATA FROM TABLE : Count(*)=",testCell.GetInt()); } //+------------------------------------------------------------------+ +比較のため、int ViewInt() 内に__int d0の プリントとテストを追加。 Print(__FUNCSIG__," || ENTER FUNCTION"); //--- TEST d0 __int d0={0}; Print ("TEST d0: d0.v=",d0.v, " DATA d.b:"); ArrayPrint(d0.b); ViewArray(d0.b,0,4); Print("ViewArray OUTPUT: d0.v=",d0.v," DATA d.b:"); ArrayPrint(d0.b); //--- d - AS WAS+いくつかのプリント __int d; d.v=0; Print("\n","d AS WAS: d.v=",d.v," DATA d.b:"); ArrayPrint(d.b); ViewArray(d.b,0,4); Print("ViewArray OUTPUT: d.v=",d.v, " DATA d.b:"); ArrayPrint (d.b); //--- return(d.v);出力://DBに接続。 //テーブルが作成された。 //値 "1 "が挿入された。 //int CSQLite3Cell::GetInt() || ENTER FUNCTION //int CSQLite3Cell::GetInt() || type=CT_INT case //int CByteImg::ViewInt() || ENTER FUNCTION //TEST d0: d0.v=0 DATA d.b: //0 0 0 0 //ViewArray OUTPUT: d0.v=1 DATA d.b: //1 0 0 0 // //d.v=0 DATA d.b: //0 0 0 0 //ViewArray OUTPUT:d.v=0 DATA d.b: //10 0 0 //RETRIEVED DATA FROM TABLE : Count(*)=0 前の投稿を書く前に、@o_o さんのコードを読み、ユニオンが あることを完全に理解しました。だからこのバグは私にとっても奇妙に思えたのですが、明らかに存在します。しかし、lib(コードのさらに下、ViewArrayと コンストラクタ __int) 。しかし、OUTPUTで ハイライトされている内容から推測すると(unionとしては明らかにおかしい)、「親切な」コンパイラーはViewArray(.bのみを操作する)の後の__intの変更に気づかず、d. v自体を「見ずに」キャッシュから .v = 0(ハイライトされている)の最後の既知の値を返したと 考えられます。 しかし、私はコンパイラー自体を見ていないので、ここでは推測に過ぎません。繰り返しますが、あなたのコードにはこのバグに関連するエラーは見当たりません。 Wemerson Guimaraes 2017.09.14 22:09 #22 MetaQuotes Software Corp.:新しい記事SQLとMQL5: SQLiteデータベースを使う を公開しました:著者:o_Oやあ、素晴らしい記事だね。 rvkstudent 2017.09.26 06:51 #23 こんにちは、スクリプトを実行すると2つの警告が出ます:2017.09.26 07:39:35.569 SQLite3Test 'C:∕UsersRoman∕AppData∕Roaming∕MetaQuotes∕Terminal∕MQL5∕Libraries∕sqlite3_32.dll' is not 64-bit version2017.09.26 07:39:35.602 SQLite3Test (GAZP,H1) Cannot load 'C:◆UsersRoman◇AppData◇Roaming◇MetaQuotes◇Terminal◇MQL5◇Libraries◇sqlite3_32.dll' [193]ライブラリ32と64の両方がアーカイブに入っていた。Win7 64を持っている。理解できません。どうすればいいですか? --- 2017.09.27 10:38 #24 rvkstudent: スクリプトを実行すると2つの警告が出る:2017.09.26 07:39:35.569 SQLite3Test 'C:∕UsersRoman∕AppData∕Roaming∕MetaQuotes∕Terminal∕MQL5∕Libraries∕sqlite3_32.dll' is not 64-bit version 2017.09.26 07:39:35.602 SQLite3Test (GAZP,H1) Cannot load 'C:♪Users ♪Roman ♪AppData ♪Roaming ♪MetaQuotes ♪Terminal ♪MQL5 ♪Libraries ♪sqlite3_32.dll' [193].ライブラリ32と64の両方がアーカイブに入っていた。Win7 64を持っている。理解できない - 何をすればいいですか?何もこれはインポートに対するMTの反応ですが、コードは引き続き動作します。付録のPrintTable関数の 修正があります。 ファイル: sql_ft__mql5.zip 808 kb Wemerson Guimaraes 2017.10.01 16:39 #25 MetaQuotes Software Corp.:新しい記事SQLとMQL5:SQLiteデータベースの使い方を 掲載しました:著者:o_O32ビット版はありますか?この問題は32ビットの顧客が多いことです。 Serhii Shevchuk 2017.11.19 17:45 #26 こんにちは。SQLite3Test.mq5を実行するとエラー14(SQLITE_CANTOPEN)が出ます。何が間違っているのでしょうか? --- 2017.11.19 18:19 #27 Serhii Shevchuk:こんにちは。SQLite3Test.mq5を実行するとエラー14(SQLITE_CANTOPEN)が出ます。 何が間違っている のでしょうか?エラーの場所をデバッグまたはログしていない。 Serhii Shevchuk 2017.11.19 18:30 #28 o_o: デバッグしない、またはエラー箇所をログに出力しない。1.アーカイブからスクリプトを「そのまま」実行する。2.実データで」デバッグする。最初の関数を入力します://--- データベース接続を開く if(sql3.Connect("SQLite3Test.db3")!=SQLITE_OK) return;3.3.SQLite3Base.mqhファイルのこの場所にたどり着く:int CSQLite3Base::Reconnect() { Disconnect(); uchar file[]; StringToCharArray(m_dbfile,file); int res=::sqlite3_open(file,m_db); m_bopened=(res==SQLITE_OK && m_db); return(res); }4.この行を実行すると int res=::sqlite3_open(file,m_db);resは14に等しい。これでスクリプトは終わりである。記事の文面から判断すると、このようになるはずですが。 "В результате работы появится файл базы данных в папке установки терминала MetaTrader 5."理由は何だろう?どちらを見ればいいのでしょうか? --- 2017.11.20 08:51 #29 ダウンロードしたスクリプトをチェック初回はすべて正常に動作しました。セルヒイ・シェフチュクどの方向を見ますか?ここから Serhii Shevchuk 2017.11.20 09:16 #30 o_o:ダウンロードしたスクリプトをチェック私もチェックした:まだエラー14です。 あなたの助けを借りるのは難しいとわかっています。自分で解決するしかない。ただ、あなたの例はどこでも機能するわけではないことを覚えておいてほしい。なぜかは分からない。 12345 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
テストスクリプト:
+比較のため、int ViewInt() 内に__int d0の プリントとテストを追加。
出力:
前の投稿を書く前に、@o_o さんのコードを読み、ユニオンが あることを完全に理解しました。だからこのバグは私にとっても奇妙に思えたのですが、明らかに存在します。
しかし、lib(コードのさらに下、ViewArrayと コンストラクタ __int) 。しかし、OUTPUTで ハイライトされている内容から推測すると(unionとしては明らかにおかしい)、「親切な」コンパイラーはViewArray(.bのみを操作する)の後の__intの変更に気づかず、d. v自体を「見ずに」キャッシュから .v = 0(ハイライトされている)の最後の既知の値を返したと 考えられます。
しかし、私はコンパイラー自体を見ていないので、ここでは推測に過ぎません。繰り返しますが、あなたのコードにはこのバグに関連するエラーは見当たりません。
新しい記事SQLとMQL5: SQLiteデータベースを使う を公開しました:
著者:o_O
やあ、素晴らしい記事だね。
こんにちは、
スクリプトを実行すると2つの警告が出ます:
2017.09.26 07:39:35.569 SQLite3Test 'C:∕UsersRoman∕AppData∕Roaming∕MetaQuotes∕Terminal∕MQL5∕Libraries∕sqlite3_32.dll' is not 64-bit version
ライブラリ32と64の両方がアーカイブに入っていた。Win7 64を持っている。理解できません。どうすればいいですか?
スクリプトを実行すると2つの警告が出る:
2017.09.26 07:39:35.569 SQLite3Test 'C:∕UsersRoman∕AppData∕Roaming∕MetaQuotes∕Terminal∕MQL5∕Libraries∕sqlite3_32.dll' is not 64-bit version
2017.09.26 07:39:35.602 SQLite3Test (GAZP,H1) Cannot load 'C:♪Users ♪Roman ♪AppData ♪Roaming ♪MetaQuotes ♪Terminal ♪MQL5 ♪Libraries ♪sqlite3_32.dll' [193].
ライブラリ32と64の両方がアーカイブに入っていた。Win7 64を持っている。理解できない - 何をすればいいですか?
何も
これはインポートに対するMTの反応ですが、コードは引き続き動作します。
付録のPrintTable関数の 修正があります。
新しい記事SQLとMQL5:SQLiteデータベースの使い方を 掲載しました:
著者:o_O
32ビット版はありますか?
この問題は32ビットの顧客が多いことです。
こんにちは。
SQLite3Test.mq5を実行するとエラー14(SQLITE_CANTOPEN)が出ます。何が間違っているのでしょうか?
こんにちは。
SQLite3Test.mq5を実行するとエラー14(SQLITE_CANTOPEN)が出ます。
何が間違っている のでしょうか?
エラーの場所をデバッグまたはログしていない。
デバッグしない、またはエラー箇所をログに出力しない。
1.アーカイブからスクリプトを「そのまま」実行する。
2.実データで」デバッグする。最初の関数を入力します:
3.3.SQLite3Base.mqhファイルのこの場所にたどり着く:
4.この行を実行すると
int res=::sqlite3_open(file,m_db);
resは14に等しい。これでスクリプトは終わりである。
記事の文面から判断すると、このようになるはずですが。
"В результате работы появится файл базы данных в папке установки терминала MetaTrader 5."
理由は何だろう?どちらを見ればいいのでしょうか?
ダウンロードしたスクリプトをチェック
初回はすべて正常に動作しました。
セルヒイ・シェフチュク
どの方向を見ますか?
ここから
ダウンロードしたスクリプトをチェック
私もチェックした:
まだエラー14です。
あなたの助けを借りるのは難しいとわかっています。自分で解決するしかない。ただ、あなたの例はどこでも機能するわけではないことを覚えておいてほしい。なぜかは分からない。