加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

c# – 使用ExecuteReader而不是ExecuteNonQuery

发布时间:2021-05-23 16:47:02 所属栏目:MySql教程 来源:网络整理
导读:MySqlCommand cmd = new MySqlCommand (@"INSERT INTO Table(field) VALUES('somevalue');" + "SELECT * FROM table",cn); 这对我很好,因为我只是将这些语句传递给我的MySQL服务器. 插入时可以使用ExecuteReader()吗?更新删除? 我通常在那些上使用Execut

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())
        {
            //...
        }
    }
}

(编辑:云计算网_泰州站长网)

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

    热点阅读