首先,我是这里的二郎新秀.我需要与MySQL数据库接口,我找到了erlang-mysql-driver.我正在尝试这一点,并且有点混淆了一些语法.
我可以用这个从数据库中获取一行数据(这里简洁过于简单):
Result = mysql:fetch(P1, ["SELECT column1, column2 FROM table1 WHERE column2='", Key, "'"]),
case Result of
{data, Data} ->
case mysql:get_result_rows(Data) of
[] -> not_found;
Res ->
%% Now 'Res' has the row
Run Code Online (Sandbox Code Playgroud)
所以现在这里有一个'Res'的例子:
[[<<"value from column1">>, <<"value from column2">>]]
Run Code Online (Sandbox Code Playgroud)
我知道这是一份记录清单.在这种情况下,查询返回1行2列.
我的问题是:
什么是对<<
和>>
符号是什么意思?用于将这样的列表转换为我已定义的记录的最佳(Erlang推荐)语法是什么:
-record(
my_record,
{
column1 = ""
,column2 = ""
}
).
Run Code Online (Sandbox Code Playgroud)
Maz*_*ake 15
只是一个小小的注释:结果不是每次看到的位串理解,它们只是位串.但是,您可以使用位串解析来生成一系列位串(上面用生成器和它描述),非常类似于列表和列表推导.
你可以使用erlang:binary_to_list/1和erlang:list_to_binary/1来转换二进制和字符串(列表).
mysql驱动程序返回位字符串的原因可能是因为它们操作起来要快得多.
在您的特定示例中,您可以通过匹配返回的列值,然后创建如下所示的新记录来执行转换:
case mysql:get_result_rows(Data) of
[] ->
not_found;
[[Col1, Col2]] ->
#my_record{column1 = Col1, column2 = Col2}
end
Run Code Online (Sandbox Code Playgroud)