在ErlyWeb的erlyweb模块中,有一个compile/2的函数,其作用是用来编译源代码到ebin中去的,函数原型是:compile(AppDir::string(), Options::[option()]) -> {ok, Now::datetime()} | {error, Err}.AppDir参数是项目所在的路径,Options是可选参数列表,其中就包含一个{erlydb_driver, Name}选项,意思就是编译的时候选择数据库驱动,同时将项目中所要用到的数据库表利用erlydb:code_gen/2函数来生成对应的beam文件,不如数据库中有一个user表,对应的就有一个user.beam.利用user来实现user表的新增、删除、修改以及查询等.
现在,从开始建立一个项目开始,一步一步来实现数据库表的操作.进入控制台,定位到需要建立项目所在的目录,比如E:\erlang\www。然后启动Erlang shell,这样erlang shell的当前工作目录就是E:\erlang\www了。然后利用erlyweb:create_app来创建一个项目,erlyweb:create_app("blog", "."),"."是代码在当前路径,执行完这个函数后,如果没有错误则将在www目录中创建一个blog目录,blog目录中包含有www、src、ebin三个目录,对应的作用是存放静态页面如html、css、js,源代码,编译后的代码。
src目录中包含一个components,用来存放各个组件如_components.erl、_view.et、以及erl文件。
在mysql数据库中创建一个blog的数据库,再新建一个login的表,包含的字段有logname,password,email.然后在elang shell中创建一个与表login对应的components,用到的函数是 :erlyweb:create_component("login", "./blog"),"./blog"是指在blog文件夹内src的components中,执行完后就产生了三个文件:login.erl、login__controller.erl、login_view.erl。在这里主要用到的就是login.erl了.
现在,开始连接到数据库,并且把login表映射到login.erl了。
1)、利用erlydb建立mysql数据库的链接
erlydb:start(mysql, [{hostname, "localhost"}, {username, "root"}, {password, "123456"}, {database, "blog"}]).
2)、连接成功后,利用erlyweb:compile来编译blog工程
erlyweb:compile("./blog", [{erlydb_driver, mysql}]).
执行成功,在ebin目录中可以看到编译后的代码文件.
3)、新建一条login记录,并且保存到数据库中
Login = login:new_with([{loginname, "John"}, {password, "123456"}, {email, "[email protected]"}]).
SavedLogin = login:save(Login).
以上执行完后,利用MySQL Query Browser可以查看到数据已经正确的插入到数据库中去了.
4)、更新login表.
login:update([{email,<<"[email protected]">>}, {password,<<"654321">>}], {loginname,'=',"John"}),其中[]中表示的是要更新的字段,{loginname,'=',"John"}表示where条件
5)、查询login表的记录
FindLogin = login:find_first({loginname, '=', "John"}).
find_first函数可以包含多个条件,每个条件用{}包含起来,比如 login:find_first({{loginname, '=', "John"},'and',{email,[email protected]}}).
6)、删除login表的记录
login.delete(FindLogin).
以上就是erldb对表的相关操作了,主要参考资料就是erlweb网站上的文档http://erlyweb.org/doc/.上面的操作可以参考erlyweb模块的create_app/2、create_component/2、compile/2函数和erldb模块的start/2函数。最主要的涉及到的添加、删除、修改、查询的操作就要参考erlydb_base模块的相关函数了