c mysql.data.entity_D语言中编译entity,database与mysql时需要注意的一个问题
注:编译entity及database时需要修改一个ulong类型为uint类型,不然会有_mysql_stmt_prepare@16连接错误。entity库可以使用ORM方式访问数据库, 把类型与数据库直接对应,使用起来非常方便。使用entity时需要另一个库database库的支持。使用dub编译entity库时会自动下载。@table("users")structUser{@primaryk
注:编译entity及database时需要修改一个ulong类型为uint类型,不然会有_mysql_stmt_prepare@16连接错误。
entity库可以使用ORM方式访问数据库, 把类型与数据库直接对应,使用起来非常方便。使用entity时需要另一个库database库的支持。使用dub编译entity库时会自动下载。
@table("users")structUser
{
@primarykey()intid;
@column("floatcol")floatfcol;
@column("doublecol")doubledcol;
@column("datecol")
Date date;
@column("datetimecol")
DateTime dt;
@column("timecol")
Time time;
@column()stringstringcol;
@column()
ubyte[] ubytecol;
}
这是使用entity的一个例子,把User结构与数据库中的表users表进行对应。
编译entity库需要下载几个东西:
1.下载entity库, 在 https://github.com/putaolabs/entity 中下载,我是在release中下载的是entity-0.0.8.zip

一、配置dub.json文件
接下来配置dub.json文件:

第一行添加-m32mscoff是让编译器编译出ms-coff格式。
第二行是让entity启用USE_MYSQL的version,这样可以让entity连接mysql的库。
二、编译entity库 (编译成功使用是会有问题,需要修改)
使用dub -b release命令编译,这时会自动下载database库到用户目录,我的在:
C:\Users\Aiyan\AppData\Roaming\dub\packages\database-0.0.3\database目录

三、修改database库中的一个问题
打开 database-0.0.3\database\src\std\database\mysql\bindings.d文件,如下图:
打开文件后搜索mysql_stmt_prepare找到mysql_stmt_prepare函数,如下图:

这个函数的最后一个参数是ulong类型,把它修改为uint类型,修改后如图:
这样修改是因为mysql中使用的是unsinged long类型,而32位C++在windows中unsinged long类型实际只有4字节,而不是8字节。修改后再修改database目录中的dub.json文件,如下图:

四、再次编译entity库
再次编译entity库前先编译database库。
再到entity目录编译entity库:

编译好后就可以使用这两个库了

作者:宛宏南
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)