小编bot*_*ked的帖子

我该如何多次插入多条记录?

我有一个名为Entry这样的类:

class Entry{
    string Id {get;set;}
    string Name {get;set;}
}  
Run Code Online (Sandbox Code Playgroud)

然后Entry使用ADO.NET 接受多个此类对象插入数据库的方法:

static void InsertEntries(IEnumerable<Entry> entries){
    //build a SqlCommand object
    using(SqlCommand cmd = new SqlCommand()){
        ...
        const string refcmdText = "INSERT INTO Entries (id, name) VALUES (@id{0},@name{0});";
        int count = 0;
        string query = string.Empty;
        //build a large query
        foreach(var entry in entries){
            query += string.Format(refcmdText, count);
            cmd.Parameters.AddWithValue(string.Format("@id{0}",count), entry.Id);
            cmd.Parameters.AddWithValue(string.Format("@name{0}",count), entry.Name);
            count++;
        }
        cmd.CommandText=query;
        //and then execute the command
        ...
    }
}  
Run Code Online (Sandbox Code Playgroud)

我的问题是:我应该继续使用上面的方式发送多个insert语句(构建一个巨大的insert语句及其参数字符串并通过网络发送),或者我应该保持一个打开的连接并发送一个insert语句对于每个人Entry这样:

using(SqlCommand …
Run Code Online (Sandbox Code Playgroud)

c# ado.net sql-server-2005 multiple-insert

28
推荐指数
5
解决办法
8万
查看次数

如何在elixir中的函数头中的地图键上进行模式匹配

我似乎找不到在函数头中的地图键上进行模式匹配的方法.有没有办法做到这一点?我正在尝试做的是根据某个键是否已存在于地图中而运行不同的代码(并且还想避免if/else等)

这就是我的代码

def my_func(key, %{key => _} = map), do: ...
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误

**(CompileError)在映射键匹配内非法使用变量键,映射只能使用^键匹配现有变量

当然我也试过用它 ^

def my_func(key, %{^key => _} = map), do: ...
Run Code Online (Sandbox Code Playgroud)

然后给出

**(CompileError)未绑定变量^键

我在Windows 8.1机器上使用elixir 1.3.1/erlang 19.0 x64.谢谢阅读!

elixir pattern-matching

15
推荐指数
1
解决办法
8089
查看次数