相关疑难解决方法(0)

如何在单个SQL连接中运行多个SQL命令?

我正在创建一个项目,我需要在单个sql连接中运行2-3个sql命令.这是我写的代码:

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\project.mdf;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("select *  from " + mytags.Text + " ", con);
SqlDataReader rd = cmd.ExecuteReader();
if (rd.Read())
{
    con.Close();
    con.Open();
    SqlCommand cmd1 = new SqlCommand("insert into " + mytags.Text + " values ('fname.lname@gmail.com','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','"+mytags.Text+"')", con);
    cmd1.ExecuteNonQuery();
    label.Visible = true;
    label.Text = "Date read and inserted";
}
else
{
    con.Close();
    con.Open();
    SqlCommand cmd2 = new SqlCommand("create table " …
Run Code Online (Sandbox Code Playgroud)

c# sql-server ado.net sqlcommand sqlconnection

38
推荐指数
7
解决办法
16万
查看次数

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

我有一个名为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万
查看次数