`
dxm1986
  • 浏览: 435239 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

erlang连接到mysql数据库

阅读更多

erlang连接到mysql数据库

 

 

一,驱动的下载与安装

 

1.        下载erlang-mysql-driver

     下载地址如下:

     svn checkout http://erlang-mysql-driver.googlecode.com/svn/trunk/     mysql

 (如果你没有安装SVN,附件中提供源码下载)

2.           src下面的所有源码进行编译

      erlc *.erl

 

3.           然后在mysql 下面创建ebin,并将src 下面的所有*.beam拷贝到ebin     下面

4.           mysql整个文件夹拷贝到erlang/lib下面

 

二, 操作数据库

1                连接mysql:

mysql:start_link(PoolId, "localhost", "root", "password", "databasename").

 

2          mysql:connect(PoolId, Host, ?PORT, User, Password, Database, undefined,

             Reconnect).%%建立一个连接

 

3           数据操作

                   添加:

mysql:fetch(PoolId,<<”insert into….”>>).

   查询:

mysql:fetch(p1,<<"select * from user">>).

 

4                接收到数据后怎么处理

                   fetch(PoolId, "select * from user") -> Result

                   %%%     Result = {data, MySQLRes} | {updated, MySQLRes} |

                            %%%     {error, MySQLRes}

 

n  查询{data, MySQLRes} = fetch(PoolId, <<"select * from user">>).

Ø  获取字段名称信息:

            FieldInfo = mysql:get_result_field_info(MysqlRes).

Ø  获取字段值:

            AllRows   = mysql:get_result_rows(MysqlRes)

                  

n  更新:

{updated,UD} = mysql: fetch(PoolId, <<"update  * from user">>).

                 AffectedRow = mysql:get_result_affected_rows(UD).%%获得影响的记录数

 

n  出错

{error,Err} = fetch(PoolId, <<"update  * from user">>).

Reason    = mysql:get_result_reason(MysqlRes).%%出错原因

分享到:
评论
1 楼 developerworks 2011-05-22  
<div class="quote_title">dxm1986 写道</div><div class="quote_div"><p><strong>erlang连接到mysql数据库</strong></p>
<p> </p>
<p> </p>
<p class="MsoListParagraph"><span lang="EN-US"><strong>一,</strong></span><span><strong>驱动的下载与安装</strong></span></p>
<p class="MsoListParagraph" style="margin-left: 21.0pt; text-indent: 0cm;"><span lang="EN-US"> </span></p>
<p class="MsoListParagraph"><span><span style="font-size: 12.0pt;" lang="EN-US"><span>1.<span style="font: 7.0pt ;">       
</span></span></span></span><span>下载</span><span style="font-size: 12.0pt;" lang="EN-US">e</span><span><span lang="EN-US">rlang-mysql-driver</span></span><span></span></p>
<p class="MsoListParagraph" style="margin-left: 42.0pt; text-indent: 0cm;"><span><span lang="EN-US"><span>     </span></span></span><span><span>下载地址如下:</span></span><span></span></p>
<p class="MsoListParagraph" style="margin-left: 42.0pt; text-indent: 0cm;"><span><span lang="EN-US"><span>     </span></span></span><span><span lang="EN-US">svn checkout http://erlang-mysql-driver.googlecode.com/svn/trunk/
<span>    </span>mysql</span></span></p>
<p class="MsoListParagraph" style="margin-left: 42.0pt; text-indent: 0cm;"><span><span lang="EN-US"> <span style="color: #339966;"><strong>(如果你没有安装SVN,附件中提供源码下载)</strong></span></span></span></p>
<p class="MsoListParagraph"><span><span lang="EN-US"><span>2.<span style="font: 7.0pt ;">    
</span></span></span></span><span><span lang="EN-US"><span>      </span></span></span><span><span>对</span></span><span><span lang="EN-US">src</span></span><span><span>下面的所有源码进行编译</span></span><span></span></p>
<p class="MsoListParagraph" style="margin-left: 42.0pt; text-indent: 0cm;"><span><span lang="EN-US"><span>      </span>erlc *.erl</span></span></p>
<p class="MsoListParagraph" style="margin-left: 21.0pt; text-indent: 0cm;"><span><span lang="EN-US"> </span></span></p>
<p class="MsoListParagraph"><span><span lang="EN-US"><span>3.<span style="font: 7.0pt ;">    
</span></span></span></span><span><span lang="EN-US"><span>      </span></span></span><span><span>然后在</span></span><span><span lang="EN-US">mysql </span></span><span><span>下面创建</span></span><span><span lang="EN-US">ebin</span></span><span><span>,并将</span></span><span><span lang="EN-US">src </span></span><span><span>下面的所有</span></span><span><span lang="EN-US">*.beam</span></span><span><span>拷贝到</span></span><span><span lang="EN-US">ebin<span>     </span></span></span><span><span>下面</span></span><span></span></p>
<p class="MsoListParagraph"><span><span lang="EN-US"><span>4.<span style="font: 7.0pt ;">    
</span></span></span></span><span><span lang="EN-US"><span>      </span></span></span><span><span>将</span></span><span><span lang="EN-US">mysql</span></span><span><span>整个文件夹拷贝到</span></span><span><span lang="EN-US">erlang/lib</span></span><span><span>下面</span></span><span></span></p>
<p class="MsoListParagraph" style="margin-left: 21.0pt; text-indent: 0cm;"><span><span lang="EN-US"> </span></span></p>
<p class="MsoListParagraph"><span><span lang="EN-US"><strong>二,</strong><span style="font: 7.0pt ;"><strong>
</strong></span></span></span><span><span><strong>操作数据库</strong></span></span><span></span></p>
<p class="MsoListParagraph"><span><span lang="EN-US"><span>1<span style="font: 7.0pt ;">               
</span></span></span></span><span><span><strong>连接</strong></span></span><span><span lang="EN-US"><strong>mysql:</strong></span></span></p>
<p class="MsoListParagraph" style="margin-left: 63.0pt; text-indent: 0cm;"><span><span lang="EN-US">mysql:start_link(</span></span><span lang="EN-US">PoolId</span><span><span lang="EN-US">,
"localhost", "root", "password", "databasename").</span></span></p>
<p class="MsoListParagraph" style="margin-left: 63.0pt; text-indent: 0cm;"><span lang="EN-US"> </span></p>
<p class="MsoListParagraph"><span lang="EN-US"><span style="white-space: pre;"> </span>2<span>          </span>mysql:connect(PoolId,
Host, ?PORT, User, Password, Database, undefined,</span></p>
<p class="MsoListParagraph" style="margin-left: 21.0pt; text-indent: 0cm;"><span lang="EN-US"><span>         </span><span>   
</span>Reconnect).<strong>%%</strong></span><span><strong>建立一个连接</strong></span></p>
<p class="MsoListParagraph" style="margin-left: 21.0pt; text-indent: 0cm;"><span lang="EN-US"> </span></p>
<p class="MsoNormal" style="margin-left: 21.0pt;"><span lang="EN-US">3<span>           </span></span><span><strong>数据操作</strong></span></p>
<p class="MsoNormal" style="margin-left: 21.0pt;"><span lang="EN-US"><span>                   </span></span><span><strong>添加:</strong></span></p>
<p class="MsoListParagraph" style="margin-left: 63.0pt; text-indent: 0cm;"><span lang="EN-US">mysql:fetch(PoolId,&lt;&lt;”insert into….”&gt;&gt;).</span></p>
<p class="MsoListParagraph" style="margin-left: 63.0pt; text-indent: 0cm;"><span>   <strong>查询:</strong></span></p>
<p class="MsoListParagraph" style="margin-left: 63.0pt; text-indent: 0cm;"><span lang="EN-US">mysql:fetch(p1,&lt;&lt;"select * from
user"&gt;&gt;).</span></p>
<p class="MsoListParagraph" style="margin-left: 63.0pt; text-indent: 0cm;"> </p>
<p class="MsoListParagraph" style="margin-left: 63.0pt; text-indent: 0cm;">
</p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-indent: 0cm; text-align: left;"><span lang="EN-US"><strong>4                </strong></span><span style=""><strong>接收到数据后怎么处理</strong></span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-align: left;"><span lang="EN-US"><span style="">                   </span>fetch(PoolId,
"select * from user") -&gt; Result</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-align: left;"><span lang="EN-US"><span style="">                   </span>%%%<span style="">     </span>Result = {data, MySQLRes} | {updated,
MySQLRes} |</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-indent: 0cm; text-align: left;"><span lang="EN-US"><span style="">                            </span>%%%<span style="">     </span>{error, MySQLRes}</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-indent: 0cm; text-align: left;"><span lang="EN-US"> </span></p>
<p class="MsoListParagraph" style=""><span style="font-family: Wingdings;" lang="EN-US"><span style="">n<span style='font: 7.0pt "Times New Roman";'>  </span></span></span><span style=""><strong>查询</strong>:</span><span lang="EN-US">{data,
MySQLRes} = fetch(PoolId, &lt;&lt;"select * from user"&gt;&gt;).</span></p>
<p class="MsoListParagraph" style=""><span style="font-family: Wingdings;" lang="EN-US"><span style="">Ø<span style='font: 7.0pt "Times New Roman";'>  </span></span></span><span style="">获取字段名称信息</span><span lang="EN-US">:</span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: 0cm; text-align: left;"><span lang="EN-US"><span style="">         </span><span style="">  
</span>FieldInfo = mysql:get_result_field_info(MysqlRes).</span></p>
<p class="MsoListParagraph" style=""><span style="font-family: Wingdings;" lang="EN-US"><span style="">Ø<span style='font: 7.0pt "Times New Roman";'>  </span></span></span><span style="">获取字段值:</span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: 0cm; text-align: left;"><span lang="EN-US"><span style="">         </span><span style="">  
</span>AllRows<span style="">   </span>=
mysql:get_result_rows(MysqlRes)</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-indent: 0cm; text-align: left;"><span lang="EN-US"><span style="">                   </span></span></p>
<p class="MsoListParagraph" style=""><span style="font-family: Wingdings;" lang="EN-US"><span style="">n<span style='font: 7.0pt "Times New Roman";'>  </span></span></span><span style=""><strong>更新</strong></span><span lang="EN-US"><strong>:</strong></span></p>
<p class="MsoListParagraph" style="margin-left: 78.15pt; text-indent: 0cm; text-align: left;"><span lang="EN-US">{updated,UD} = mysql: fetch(PoolId, &lt;&lt;"update
<span style=""> </span>* from user"&gt;&gt;).</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-indent: 0cm; text-align: left;"><span lang="EN-US"><span style="">         </span><span style="">  
</span><span style="">  </span><span style="">   </span>AffectedRow = mysql:get_result_affected_rows(UD).%%</span><span style="">获得影响的记录数</span></p>
<p class="MsoListParagraph" style="margin-left: 21pt; text-indent: 0cm; text-align: left;"><span lang="EN-US"> </span></p>
<p class="MsoListParagraph" style=""><span style="font-family: Wingdings;" lang="EN-US"><span style="">n<span style='font: 7.0pt "Times New Roman";'> <strong> </strong></span></span></span><span style=""><strong>出错</strong></span></p>
<p class="MsoListParagraph" style="margin-left: 78.15pt; text-indent: 0cm; text-align: left;"><span lang="EN-US">{error,Err} = fetch(PoolId, &lt;&lt;"update
<span style=""> </span>* from user"&gt;&gt;).</span></p>
<p class="MsoListParagraph" style="margin-left: 78.15pt; text-indent: 0cm; text-align: left;"><span lang="EN-US">Reason<span style="">    </span>= mysql:get_result_reason(MysqlRes).%%</span><span style="">出错原因</span></p>
</div><br/>注意mysql:start_link的第八个参数encoding,设置为utf8,以支持中文

相关推荐

    erlang_mysql编译好了

    本文将详细介绍如何在Erlang环境中编译并使用MySQL接口,以便在Erlang程序中访问MySQL数据库。 首先,我们需要一个Erlang MySQL客户端库。这里提到的“erlang_mysql编译好了”可能是指已经成功编译了这样的库,它...

    erlang mysql

    1. **Erlang MySQL 驱动**:Erlang MySQL 驱动是连接 MySQL 数据库的关键组件,它实现了 Erlang 与 MySQL 之间的通信协议。例如,`mysql_client` 或 `emysql` 是两个流行的 Erlang MySQL 驱动。这些驱动提供了 API,...

    英雄远征erlang服务器源码含数据库

    Erlang提供了多种数据库连接库,如Mnesia(Erlang内置的分布式数据库)或者其他第三方库如MySQL、PostgreSQL的驱动,用于存储和检索游戏数据。 6. **游戏源码分析**:对于初学者来说,分析游戏服务器的源码可以帮助...

    Erlang与Mysql对接

    Erlang是一种面向并发的、强类型的编程语言,...总之,Erlang与MySQL的对接涉及了数据库驱动的选用和使用,以及Erlang对数据库操作的封装。理解这些基本概念和流程,有助于构建健壮的、数据库驱动的Erlang应用程序。

    erlang的mysql驱动接口

    连接MySQL服务器后,Erlang程序可以通过发送消息到对应的Erlang进程来执行SQL命令。当不再需要连接时,应关闭连接以释放资源。`dizzyd-erlang-mysql-driver` 提供了连接管理和断开连接的函数,确保了连接的生命周期...

    erlang emysql

    Erlang是一种并发和分布式系统设计的强大工具,而emysql则提供了连接和操作MySQL数据库的接口,使得开发者能够方便地在Erlang应用中实现数据存储和查询功能。 在深入emysql之前,我们首先了解Erlang的基本概念。...

    Erlang Mysql Driver

    Erlang MySQL Driver是用于Erlang编程语言的一个数据库连接驱动程序,专门设计用来与MySQL数据库进行交互。这个驱动程序提供了在Erlang环境中高效、可靠地执行SQL查询和其他数据库操作的能力。 `mysql_conn.erl` ...

    英雄远征erlang源码

    【描述】:“英雄远征服务器端erlang源码,用mysql数据库”意味着该源码中包含了与MySQL数据库交互的逻辑,服务器端负责处理游戏数据的存储和读取,如玩家信息、游戏进度、交易记录等。MySQL是一个广泛使用的开源关系...

    Erlang6大数据存储方式总结

    通过《ets数据结构总结1.txt》和《ets数据结构总结2-Mnesia.txt》,你可以深入了解ETS的各类数据结构及其在连接外部数据库(如《ets数据结构总结3-连接外部数据库.txt》中提到的MySQL)时的应用场景和策略。...

    英雄远征源码[erlang]

    综上所述,《英雄远征》的Erlang源码结合MySql数据库,展示了如何利用Erlang的特性构建一个高效、稳定的网络游戏服务端。深入研究这份源码,不仅可以提升Erlang编程技能,也能为其他类似项目提供参考和启发。

    erlang websocket

    Erlang Websocket详解:构建实时通信应用 ...配合rebar3构建工具,可以便捷地管理和构建Erlang项目,而emysql则提供了与MySQL数据库交互的能力。这三者结合,为构建实时通信应用如聊天系统提供了强大的基础支持。

    Erlang-game-server开发实践.pdf

    * 数据库层的实现:使用Erlang的ETS、Mnesia、MySQL、MongoDB等数据库来存储游戏数据。 游戏服务器的优点 使用Erlang开发游戏服务器有以下几个优点: * 高并发:Erlang的Actor模型和轻量级进程使得其能够轻松地...

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

    对于一个数据库访问请求,参数将被传递到驱动程序并在异步线程中进行处理。 然后,该请求将转换为不同数据库类型的相应SQL语句。 之后,工作线程将调用供应商的C / C ++ API执行这些SQL语句,并以ei返回响应。 ...

    tsung+erlang包

    Erlang 是由瑞典电信设备制造商 Ericsson 开发的,它的并发模型使得在处理大规模并发连接时表现出色,因此非常适合构建像 Tsung 这样的高并发测试工具。Erlang 的 OTP(Open Telecom Platform)框架提供了许多基础库...

    erlang_web_development

    3. **统一平台优势**:传统的Web应用通常由Apache Web服务器、MySQL数据库后端、Perl和PHP等组件组成,这些组件需要独立管理和支持,其间的数据格式和接口定义复杂。而在Erlang中,所有这些组件可以在同一技术平台上...

    myer:MySQL驱动程序,使用MySQL网络协议

    MySQL驱动程序是用于连接和操作MySQL数据库的软件组件,它实现了与MySQL服务器之间的通信协议,使得Erlang应用程序能够方便地进行数据存取。Myer是这样一个驱动程序,专为Erlang编程语言设计,利用MySQL的网络协议来...

    onlyoffice的资源包,此包包括erlang和onlyoffice-documentserver

    - **数据库配置**:OnlyOffice支持多种数据库,如MySQL、PostgreSQL和Microsoft SQL Server,需要根据实际情况选择并配置。 - **安全性**:必须确保服务器的安全性,包括防火墙设置、SSL证书配置以及定期更新和安全...

    Erlang开发电信网管项目实践.ppt

    标题中的“Erlang开发电信网管...总的来说,这个Erlang开发的电信网管项目实践展示了如何利用Erlang的优势来构建高效、可扩展且可靠的网络管理系统,同时也反映了在技术选择上从复杂到简洁,从单一到分散的转变趋势。

    mysql-otp:MySQLOTP – ErlangOTPMySQL和MariaDB客户端

    5. **连接池**:MySQL OTP可以通过`poolboy`或其他Erlang连接池库来实现连接池管理,提高系统性能并减少资源消耗。 6. **错误处理**:Erlang OTP的特性使得MySQL OTP可以优雅地处理错误,当数据库连接出现问题时,...

    sumo_db:Erlang持久性框架

    `sumo_db` 是一个为Erlang编程语言设计的持久性框架,旨在提供与多种数据库系统的集成,包括MySQL、Elasticsearch、Erlang的Mnesia、MongoDB、PostgreSQL(pgsql)以及Riak。这个框架的主要目标是简化在Erlang应用...

Global site tag (gtag.js) - Google Analytics