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

c# – SQLCommand.ExecuteReader()不限制只读语句

发布时间:2020-12-15 19:36:56 所属栏目:百科 来源:网络整理
导读:显然,ExecuteReader用于只读,ExecuteNonQuery用于事务.但由于某种原因,即使我使用ExecuteReader,我仍然可以运行write(插入,更新,删除)命令(在textbox1中键入).我的代码有问题还是我误解了ExecuteReader的工作方式? //MY CODEstring sqlStatement = textbox1
显然,ExecuteReader用于只读,ExecuteNonQuery用于事务.但由于某种原因,即使我使用ExecuteReader,我仍然可以运行write(插入,更新,删除)命令(在textbox1中键入).我的代码有问题还是我误解了ExecuteReader的工作方式?

//MY CODE

string sqlStatement = textbox1.Text;

System.Data.SqlClient.SqlConnectionStringBuilder builder =
  new System.Data.SqlClient.SqlConnectionStringBuilder();
builder.DataSource = ActiveServer;
builder.IntegratedSecurity = true;

System.Data.SqlClient.SqlConnection Connection = new 
   System.Data.SqlClient.SqlConnection(builder.ConnectionString);
Connection.Open();

System.Data.SqlClient.SqlCommand command = new 
  System.Data.SqlClient.SqlCommand(sqlStatement,Connection);
System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();

dataGridView1.AutoGenerateColumns = true;

bindingSource1.DataSource = reader;
dataGridView1.DataSource = bindingSource1;

reader.Close();
Connection.Close();

解决方法

ExecuteReader只返回一个读取器,它可以读取从SQL过程返回的行 – 它不会阻止您在提供该结果集的过程中运行任意SQL.

执行插入/更新/删除然后立即返回结果集(因此从代码看起来像读取)可能有点奇怪(读取:代码气味),应该检查它是否可以分成不同的操作.

(编辑:李大同)

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

    推荐文章
      热点阅读