加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

c# – 使用ExecuteReader而不是ExecuteNonQuery

发布时间:2021-05-23 06:02:53 所属栏目:编程 来源:网络整理
导读:MySqlCommand cmd = new MySqlCommand (@"INSERT INTO Table(field) VALUES('somevalue');" + "SELECT * FROM table",cn); 这对我很好,由于我只是将这些语句转达给我的MySQL处事器. 插入时可以行使ExecuteReader()吗?更新删除? 我凡是在那些上行使ExecuteN

MySqlCommand cmd = new MySqlCommand
                    (@"INSERT INTO Table(field) VALUES('somevalue');" +
                    "SELECT * FROM table",cn);

这对我很好,由于我只是将这些语句转达给我的MySQL处事器.

插入&时可以行使ExecuteReader()吗?更新&删除?

我凡是在那些上行使ExecuteNonQuery().

最佳谜底 您只需将特另外INSERT与SELECT与ExecuteReader()绑缚在一路即可.这不要紧.

我确实看到两件也许不吻合的对象……代码自己没什么,可是你展示的内容是简化的,简化的代码体现了一些隐藏的不良做法:

第一个不吻合的是你的代码看起来也许正在行使字符串通接来将值替代为查询.像这样的对象:

MySqlCommand cmd = new MySqlCommand
                (@"INSERT INTO Table(field) VALUES('" + somevariable + "');" +
                "SELECT * FROM table",cn);

这是一个庞大的题目,由于它在您的应用措施中打开了一个庞大的安详裂痕.相反,您必要行使查询参数,因此代码看起来更像这样:

MySqlCommand cmd = new MySqlCommand
                (@"INSERT INTO Table(field) VALUES(@somevalue);" +
                "SELECT * FROM table",cn);
cmd.Parameters.Add("@somevalue",SqlDbType.VarChar,50).Value = somevariable;

另一个隐藏的题目是你的呼吁,更重要的是你的毗连,应该包括在try / finally块中(可能首选行使块),如下所示:

using (var cn = new MySqlConnection("..."))
using (var cmd = new MySqlCommand("@INSERT INTO Table(field).... ",cn))
{
    cmd.Parameters.Add(...);
    cn.Open();
    using (var rdr = cmd.ExecuteReader())
    {
        while (rdr.Read())
        {
            //...
        }
    }
}

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读