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

{

@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

f67712762b60a28cb99665b4a4a54adc.png

一、配置dub.json文件

接下来配置dub.json文件:

1d0f2a8a30629d130a660a447f144b49.png

第一行添加-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目录

3ae47d11181313a67099c12da18fd860.png

三、修改database库中的一个问题

打开 database-0.0.3\database\src\std\database\mysql\bindings.d文件,如下图:

f07df8c7f06cd05bdb83725de54ebe08.png 打开文件后搜索mysql_stmt_prepare找到mysql_stmt_prepare函数,如下图:

ea5c9d9a84cf2ed89b92396caa9c65c0.png

这个函数的最后一个参数是ulong类型,把它修改为uint类型,修改后如图:

286b6bcf4334f917eb7df132c99067c1.png     这样修改是因为mysql中使用的是unsinged long类型,而32位C++在windows中unsinged long类型实际只有4字节,而不是8字节。修改后再修改database目录中的dub.json文件,如下图:

47fac0e06acce331537ea234bcdcb147.png

四、再次编译entity库

再次编译entity库前先编译database库。

202cf920c39976734f12298566f7e2b2.png        再到entity目录编译entity库:

f4a46a49ebe095df8a55265475798337.png

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

3ade12ab5083cff9dbef1653d69a3e3c.png

作者:宛宏南

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值