作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
很明显,ExecuteReader 用于只读,ExecuteNonQuery 用于事务。但出于某种原因,即使我使用 ExecuteReader,我仍然能够运行写入(插入、更新、删除)命令(在 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。
执行插入/更新/删除然后立即返回结果集(因此从代码看起来像读取)可以说有点奇怪(阅读:代码味道),应该审查它是否可以分成不同的 Action 。
关于c# - SQLCommand.ExecuteReader() 不限于只读语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348012/
我是一名优秀的程序员,十分优秀!