`
jeooo.li
  • 浏览: 46291 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

利用ErlyDB来实现数据库表的添加、删除、修改、查询操作

阅读更多

     在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, "test@126.com"}]).

    SavedLogin = login:save(Login).

   以上执行完后,利用MySQL Query Browser可以查看到数据已经正确的插入到数据库中去了.

   4)、更新login表.

     login:update([{email,<<"123@123.com">>}, {password,<<"654321">>}], {loginname,'=',"John"}),其中[]中表示的是要更新的字段,{loginname,'=',"John"}表示where条件

   5)、查询login表的记录

    FindLogin = login:find_first({loginname, '=', "John"}).

    find_first函数可以包含多个条件,每个条件用{}包含起来,比如 login:find_first({{loginname, '=', "John"},'and',{email,test@126.com}}).

   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模块的相关函数了

   

分享到:
评论

相关推荐

    erldb-driver:erlang的链接驱动程序,支持流行的RDMBS,例如mysql,oracle,DB2和sybase

    它使用异步线程来避免在数据库访问期间出现IO阻塞,这与实现Erlang异步驱动程序的方式相同。 我们遵循Erlydb(erlang_mysql_driver)的语法来设计API。 对于一个数据库访问请求,参数将被传递到驱动程序并在异步...

    python自学教程-04-自定义JavaScript.ev4.rar

    python自学教程-04-自定义JavaScript.ev4.rar

    严蔚敏数据结构全套C语言实现

    严蔚敏数据结构全套C语言实现

    Java_Android的可扩展媒体播放器.zip

    Java_Android的可扩展媒体播放器

    源代码-DBAdmin 在线Access数据库管理程序 v2.3.zip

    源代码-DBAdmin 在线Access数据库管理程序 v2.3.zip

    Apache Dubbo的java实现RPC和微服务框架.zip

    Apache Dubbo的java实现RPC和微服务框架

    ubuntu20.04下编译mysql驱动项目源码

    ubuntu20.04下编译mysql驱动项目源码,编译项目驱动后拷贝到对应位置 scp libqsqlmysql.so /home/pc/Qt5.14.2/Tools/QtCreator/lib/Qt/plugins/sqldrivers scp libqsqlmysql.so /home/pc/Qt5.14.2/5.14.2/gcc_64/plugins/sqldrivers sudo scp libqsqlmysql.so /usr/lib/x86_64-linux-gnu

    数据分析是一个复杂而系统的过程

    数据分析是一个复杂而系统的过程

    激光雷达模拟数据采集哈哈哈

    我么采用几个黄磊经重新生成萨沙时常

    f103系列启动文件 各种都有

    startup_stm32f10系列的startup_stm32f10x_cl.s startup_stm32f10x_hd.s startup_stm32f10x_hd_vl.s startup_stm32f10x_ld.s startup_stm32f10x_ld_vl.s startup_stm32f10x_md.s startup_stm32f10x_md_vl.s startup_stm32f10x_xl.s

    信息安全基础课程实验作业-Diffie-Hellman密钥交换模块-内含源码和说明书(可自己修改).zip

    本项目是课程设计课程实验的demo,内含源码和说明书,可以自己修改

    信息安全基础课程实验作业-DAA消息认证码(MAC)模块 -内含源码和说明书(可自己修改).zip

    本项目是课程设计课程实验的demo,内含源码和说明书,可以自己修改

    grpcio-1.12.1-cp35-cp35m-manylinux1_i686.whl

    Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    grpcio-1.15.0-cp34-cp34m-linux_armv7l.whl

    Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡图表绘制培训.pptx

    麦肯锡图表绘制培训.pptx

    前端开发;JavaScript、TypeScript、Vue、React、前端、前端架构师;最新技术学习视频资料

    内容概要:资料包括6门线上视频课程,有TypeScript 类型体操通关秘籍与TypeScript全面进阶指南、Vue3+React18+TS4入门到实战系统学习、前端实战训练营、前端架构师、以及两门知名教育机构线下就业班视频。 适用人群:想从事前端开发的大学学生、转行it的从业者、提高自己前端开发技能的从业者以及进阶架构师的程序员。 使用场景及目标:线上视频教程,目标是学习前端知识以及掌握最新前端技术。 其他:由于视频文件内存过大,文件为网盘链接,下载后复制到网盘获取即可,如有疑问可联系客服,谢谢。

    hamcrest-core-1.3.jar

    javaee/javaweb常用jar包,亲测可用,导入到java工程中即可使用

    grpcio-1.14.1-cp36-cp36m-manylinux1_x86_64.whl

    Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    grpcio-1.16.1-cp35-cp35m-linux_armv7l.whl

    Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    grpcio-1.16.1-cp35-cp35m-manylinux1_i686.whl

    Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics