文章 "SQL 与 MQL5: 与 SQLite 数据库集成" - 页 4 12345 新评论 --- 2017.11.20 09:49 #31 Serhii Shevchuk:我知道你很难得到帮助。 如果你不告诉我问题是怎么来的,我怎么帮你? 也许你用的是苹果电脑,或者你的文件夹有只读权限。 我不知道你的文件系统是怎样的。来自汽车论坛:XXX:更换机油盖后发动机噼啪作响。帮助了解原因和可能造成的后果uuu:原因可能很多,但后果可能不同。xxx: 谢谢。我还不知道原因。找到原因后,请告诉我。 Viktar Dzemikhau 2018.07.02 12:31 #32 我没有读完整篇文章,因为这些图书馆真是一团糟。尽管如此,我还是从中汲取了一些东西,因为这是我看到的关于这个主题的第一篇文章。然后我意识到,我需要阅读官方文档,因为你无法从这样一篇文章中学到任何东西。事实上,我要说的是,关于sqlite3_bind_xxx 函数的信息并不正确。文章作者在误导读者。这些函数的目的完全不同。如果文章作者自己没有研究过这个主题,或者不想只是写写这个主题,那么最好不要写。当我读完文章中关于该功能的废话后,我不得不思考了一个多小时。没错。我一周前才开始使用 DBMS。我正在逐渐掌握它。这就是我不容易理解的原因。当我意识到sqlite3_bind_xxx 函数的作用时,我感到非常惊讶。 我没想到这篇文章的作者会做这样的事情。我一直以为他是个专业人士。 Andrey Azatskiy 2018.08.09 19:22 #33 我还没有测试文章所附的材料,但我在 Pluses 中遇到了类似的错误。我无法在传递的路径上打开/创建数据库,它总是在项目目录下创建,或者在项目目录指定的路径上创建(/new folder/myDB.db)...... 我导入了 创建和关闭数据库的功能,并尝试创建它。结果,我在下载中创建了数据库。 Serhii Shevchuk 2018.08.10 10:56 #34 ---:原因可能很多,后果也可能很多。谢谢,我明白了。问题解决了,问题消除了。 Andrey Azatskiy 2018.08.10 20:08 #35 我有一个非常有趣的情况)就在昨天,一切都被创建和工作(虽然从 "下载 "文件夹中的东西),但一夜之间,基地文件停止创建,但基地本身的工作,因为它应该进行测试,试图创建一个基地放置在内存中sqlite3_open(":memory:"") - 基地创建,数据加载/读取。 也许是访问权限的问题,你有什么感想?如何检查这在 Windows 知道谁? Viktar Dzemikhau 2018.08.11 01:25 #36 Andrey Azatskiy: 我有一个非常有趣的情况)就在昨天,一切都被创建和工作(虽然从 "下载 "文件夹中的东西),但一夜之间,基地文件停止创建,但基地本身的工作,因为它应该进行测试,试图创建一个基地放在内存中的 sqlite3_open(":内存:"") - 基地创建,数据加载/读取。 也许是访问权限的问题,你有什么感想?如何检查这在 Windows 知道谁?其实很容易检查。首先尝试将数据库放在 "我的文档 "中。如果能用,那就不是权限问题。但总的来说,这取决于你是怎么做的。我个人花了两周时间,直到创建了使用 SQLite3 所需的一切。我不得不翻译文档,因为在俄语中没有足够的相关信息。就像这篇文章一样,里面有很多垃圾和废话。以上就是我的一个经历。然后我停下来,自己研究了这个问题。 我有这样一个封装: //================================================================================================================================================================================== // sqlite3_open_v2 的基本封装。============================================================================================================================================== int SQLite3 :: sqlite3_open(const string& filename, intptr_t& dbHandle, int flags) { uchar utf8_filename[]; stringToUtf8(filename, utf8_filename); return sqlite3_open_v2(utf8_filename, dbHandle, flags, 0); } 这就是stringToUtf8 函数: //================================================================================================================================================================================== // 将字符串转换为 utf-8 字节数组。========================================================================================================================================= void stringToUtf8(const string strToConvert, // 以 utf-8 编码将字符串转换为数组 uchar& utf8[], // 将转换后的字符串 strToConvert 放在其中的 utf-8 编码数组 const bool untilTerminator = true) export { // 将被复制到 utf8 数组并转换为 utf-8 编码的字符数。 //--- int count = untilTerminator ? -1 : StringLen(strToConvert); StringToCharArray(strToConvert, utf8, 0, count, CP_UTF8); } 我把它放在一个单独的库中。 Andrey Azatskiy 2018.08.12 18:51 #37 Viktar Dzemikhau:其实很容易检查。首先试着把数据库放到 "我的文档 "中。如果能用,那就不是权限问题了。但总的来说,这取决于你是怎么做的。我个人花了两周时间,直到创建了使用 SQLite3 所需的一切。我不得不翻译文档,因为在俄语中没有足够的相关信息。在这篇文章中,有很多垃圾信息。以上是我遇到的其中一个问题。后来我放弃了,自己研究这个问题。我有一个包装:这里是stringToUtf8 函数:我把它放在一个单独的库中。是的,我遇到了 2 个错误: 1 - 编码(非常感谢这个函数,我不知道如何正常转换为 UTF -8) 2 - 权限。 Viktar Dzemikhau 2018.08.13 23:43 #38 Andrey Azatskiy:是的,我有 2 个错误: 1 - 编码(非常感谢你的功能,我不知道如何正常翻译成 UTF -8) 2 - 权限。是的,不客气。我还记得自己在这个问题上有多纠结。文章写得如此糟糕。有一个选择。要么阅读官方文档,要么去问别人。没有人可以问。我只能自己研究。关键是,如果你用 C++ 编写,就会有人来问你。但当你通过垫圈编写并将其传输到 µl 时,能帮你的人就很少了。这对 Plus 用户来说太难了。) Quintos 2018.10.18 12:06 #39 我想我发现了内存泄漏: 在SQLite3Base.mqh 第 250 行中 ::sqlite3_finalize(stmt); // 清洁 应该是 ::sqlite3_finalize(pstmt); // 清洁 Artiom Morochin 2018.11.14 21:35 #40 Viktar Dzemikhau:其实很容易检查。首先试着把数据库放到 "我的文档 "中。如果能用,那就不是权限问题了。但总的来说,这取决于你是怎么做的。我个人花了两周时间,直到创建了使用 SQLite3 所需的一切。我不得不翻译文档,因为在俄语中没有足够的相关信息。在这篇文章中,有很多垃圾信息。以上是我遇到的其中一个问题。后来我放弃了,自己研究这个问题。我有一个包装:这里是stringToUtf8 函数:我把它放在一个单独的库中。我用它来转换为 utf int u2a(string txt,uchar &out[]){ return(StringToCharArray(txt,out))}; 12345 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
Serhii Shevchuk:
我知道你很难得到帮助。
如果你不告诉我问题是怎么来的,我怎么帮你?
也许你用的是苹果电脑,或者你的文件夹有只读权限。
我不知道你的文件系统是怎样的。
来自汽车论坛:
XXX:更换机油盖后发动机噼啪作响。帮助了解原因和可能造成的后果
uuu:原因可能很多,但后果可能不同。
xxx: 谢谢。
我还不知道原因。
找到原因后,请告诉我。
我导入了 创建和关闭数据库的功能,并尝试创建它。结果,我在下载中创建了数据库。
原因可能很多,后果也可能很多。
谢谢,我明白了。问题解决了,问题消除了。
也许是访问权限的问题,你有什么感想?如何检查这在 Windows 知道谁?
我有一个非常有趣的情况)就在昨天,一切都被创建和工作(虽然从 "下载 "文件夹中的东西),但一夜之间,基地文件停止创建,但基地本身的工作,因为它应该进行测试,试图创建一个基地放在内存中的 sqlite3_open(":内存:"") - 基地创建,数据加载/读取。 也许是访问权限的问题,你有什么感想?如何检查这在 Windows 知道谁?
其实很容易检查。首先尝试将数据库放在 "我的文档 "中。如果能用,那就不是权限问题。但总的来说,这取决于你是怎么做的。我个人花了两周时间,直到创建了使用 SQLite3 所需的一切。我不得不翻译文档,因为在俄语中没有足够的相关信息。就像这篇文章一样,里面有很多垃圾和废话。以上就是我的一个经历。然后我停下来,自己研究了这个问题。
我有这样一个封装:
这就是stringToUtf8 函数:
我把它放在一个单独的库中。
其实很容易检查。首先试着把数据库放到 "我的文档 "中。如果能用,那就不是权限问题了。但总的来说,这取决于你是怎么做的。我个人花了两周时间,直到创建了使用 SQLite3 所需的一切。我不得不翻译文档,因为在俄语中没有足够的相关信息。在这篇文章中,有很多垃圾信息。以上是我遇到的其中一个问题。后来我放弃了,自己研究这个问题。
我有一个包装:
这里是stringToUtf8 函数:
我把它放在一个单独的库中。
是的,我遇到了 2 个错误:
1 - 编码(非常感谢这个函数,我不知道如何正常转换为 UTF -8)
2 - 权限。
是的,我有 2 个错误:
1 - 编码(非常感谢你的功能,我不知道如何正常翻译成 UTF -8)
2 - 权限。
是的,不客气。我还记得自己在这个问题上有多纠结。文章写得如此糟糕。有一个选择。要么阅读官方文档,要么去问别人。没有人可以问。我只能自己研究。关键是,如果你用 C++ 编写,就会有人来问你。但当你通过垫圈编写并将其传输到 µl 时,能帮你的人就很少了。这对 Plus 用户来说太难了。)
我想我发现了内存泄漏:
在SQLite3Base.mqh 第 250 行中
::sqlite3_finalize(stmt); // 清洁应该是
::sqlite3_finalize(pstmt); // 清洁其实很容易检查。首先试着把数据库放到 "我的文档 "中。如果能用,那就不是权限问题了。但总的来说,这取决于你是怎么做的。我个人花了两周时间,直到创建了使用 SQLite3 所需的一切。我不得不翻译文档,因为在俄语中没有足够的相关信息。在这篇文章中,有很多垃圾信息。以上是我遇到的其中一个问题。后来我放弃了,自己研究这个问题。
我有一个包装:
这里是stringToUtf8 函数:
我把它放在一个单独的库中。
我用它来转换为 utf