- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过在 Lazarus/Freepascal 中制作的连接器查询我的数据库。它使用 libmysql
来自 MySQL 5.0
.据我所知,我可以调用的函数与 MYSQL C Connector
的函数相同.
数据库不支持远程访问;它是一个可通过管道访问的数据库,我正在尝试使用仅内存表(无 MyISAM
或 InnoDB
)针对本地读取进行优化。速度是主要焦点。
客户端应用程序使用称为 MQL4(用于金融市场)的受限脚本语言编写,并使用我的库重复查询数据库并返回结果以供分析。
问题是:每次发送新查询时,我都被迫销毁并重新创建与数据库的连接。
如果我不破坏并重新创建连接,我将获得读取访问冲突,因为我的连接器库丢失了 *MYSQL
的值由 mysql_real_connect()
分配.
我会通过我的客户端应用程序传递这个值,但不幸的是,它是用一种只能处理 LongInt
的语言编写的, Double
, 和 String
数据类型。
我试图通过我的客户端应用程序将值传递给 LongInt
, 然后把它扔回去 *MYSQL
在我的图书馆,但那没有用。
老实说,我不明白为什么我的图书馆失去了 *MYSQL
的值(value).
这是我的库代码:
{$CALLING STDCALL}
library D1Query;
{$mode objfpc}{$H+}
uses
cmem, Windows, SysUtils, mysql50;
var
sock: PMYSQL;
qmysql: st_mysql;
type
VArray = array[0..100] of Double;
PArray = ^VArray;
procedure InitSQL; stdcall;
begin
sock := mysql_real_connect(PMysql(@qmysql), '.', 'root', 'password'
, 'data', 3306, 'mysql', CLIENT_MULTI_STATEMENTS);
if sock = nil then begin
OutputDebugString(PChar(' Couldn''t connect to MySQL.'));
OutputDebugString(PChar(mysql_error(@qmysql)));
halt(1);
end;
end;
procedure DeInitSQL; stdcall;
begin
mysql_close(sock);
end;
function SQL_Query(QRY: PChar; output: PArray): integer; stdcall;
var
rowbuf: MYSQL_ROW;
recbuf: PMYSQL_RES;
i: integer;
nfields: LongWord;
begin
if (mysql_query(sock, QRY) < 0) then begin
OutputDebugString(PChar(' Query failed '));
OutputDebugString(PChar(' ' + mysql_error(sock)));
end;
recbuf := mysql_store_result(sock);
nfields := mysql_num_fields(recbuf);
rowbuf := mysql_fetch_row(recbuf);
if (rowbuf <> nil) then begin
for i:=0 to nfields-1 do
output^[i] := StrToFloatDef(rowbuf[i], -666);
end;
mysql_free_result(recbuf);
Result := i;
end;
exports
SQL_Query, InitSQL, DeInitSQL;
begin
end.
最佳答案
迈克,我建议使用 ZEOS 6.6.6 连接到 MySQL。
这样你就不必在低级代码中乱搞,但你可以只使用标准的 ZEOS 控件:TZConnection TZQuery 等。
这是 Lazarus 中 ZEOS 的 Howto:http://wiki.lazarus.freepascal.org/Zeos_tutorial
你可以下载 ZEOS 包
这里:http://sourceforge.net/projects/zeoslib/files/Zeos%20Database%20Objects/zeosdbo-6.6.6-stable/ZEOSDBO-6.6.6-stable.zip/download
下载 zip 文件并安装 lazarus 的软件包。
可以在这里找到帮助文件:http://sourceforge.net/projects/zeoslib/files/Zeos%20Database%20Objects/zeosdbo-6.6.6-stable/
祝你好运。
关于mysql - 如何避免对每个查询重复使用 mysql_real_connect()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6158617/
我想编写一个 MySQL 守护进程插件来监视其他 MySQL 服务器上的查询,并将它们与运行在守护进程所在位置的查询进行比较。基本上这是在蜘蛛引擎设置中,在头节点上启动的查询在分片上运行。每当一个查询
我正在通过在 Lazarus/Freepascal 中制作的连接器查询我的数据库。它使用 libmysql来自 MySQL 5.0 .据我所知,我可以调用的函数与 MYSQL C Connector
我正在尝试构建一个队列处理器,它从 mysql 获取任务作业,并且我需要 mysql 连接器变量是全局的,因为我需要在多个函数中使用它。这是代码: ... MYSQL *connect; ... in
考虑以下 C 代码: int main (int argc, char *argv[]) { MYSQL *sql_handle; fprintf(stdout,"initializing h
我有以下代码结构(整个代码很大,我认为这段代码与我的问题相关), MYSQL_RES *res_set; MYSQL_ROW row; MYSQL *connect; int main() { co
我试图弄清楚为什么我与 MySQL 数据库的连接似乎对每个连接每秒可以进行的 INSERT 数量有非常小的限制(小于 100)。我读过有关连接限制的内容,但这些都是关于每小时限制的。我遇到的是每秒限制
我无法使用以下代码连接到 MySQL 远程服务器: MYSQL conn; bool con_to_db() { conn = mysql_init(0); conn =mysql
我正在开发一个使用 C++ 和 C MySQL 适配器编写的 CGI 应用程序。我正在尝试对两个数据库运行查询,因此我想在不选择默认数据库的情况下连接到 MySQL 服务器。这可能吗?我正在使用 my
我在本地计算机上管理 MySQL 数据库,并通过运行以下程序通过 C 连接到它: #include #include #include int main(int argc, char** arg
好吧,我的问题很简单,我是 C++ 的新手,所以这对某些人来说可能是一个简单的答案,但我正在使用 libmysql 连接到数据库,到目前为止它也能正常工作,我也需要它。但是我希望能够连接到在本地主机上
我正在使用 libmysql C API,mysql_real_connect 调用仅在我使用主机的真实 IP 地址(除了 localhost)时才有效。如果我使用 localhost 作为主机,我会
我正在尝试对连接到本地 SQL 数据库然后运行一系列命令的 C 程序进行故障排除。应该是 SQL Coding 101... 但我遗漏了一些基本的东西。我在 Linux 容器中工作,它支持 SQL 服
我是一名优秀的程序员,十分优秀!