我有一个按钮单击功能,用于运行存储过程。
存储过程返回数据。执行之后,取决于数据读取器的输出,需要执行另一个命令。
using (SqlDataReader oReader = command.ExecuteReader())
{
while (oReader.Read())
{
if (oReader["comments1"].ToString() == "0")
{
MessageBox.Show("CHECK THE COMMENTS AND THE GIVEN VALUE");
;
}
else
{
command.ExecuteNonQuery();
MessageBox.Show("Inserted data");
ClearTextBoxes(this);
button2.Enabled = false;
}
}
}
已经有与此命令关联的打开的DataReader, 必须先关闭
我知道我正在尝试使用相同的连接来读取和写入表中的数据。
是否有其他方法可以解决给定的问题。
整个功能:
private void button2_Click(object sender, EventArgs e)
{
var connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var command = new SqlCommand(@"[lis1].[_Submit_test]", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Date", SqlDbType.Date).Value = textBox1.Text;
command.Parameters.Add("@Username", SqlDbType.VarChar).Value = textBox11.Text;
command.Parameters.Add("@workflow", SqlDbType.VarChar).Value = comboBox2.Text;
command.Parameters.Add("@program", SqlDbType.VarChar).Value = comboBox1.Text;
command.Parameters.Add("@Full_Denial", SqlDbType.Int).Value = textBox2.Text;
command.Parameters.Add("@Partial_Denial", SqlDbType.Int).Value = textBox3.Text;
command.Parameters.Add("@No_Findings", SqlDbType.Int).Value = textBox4.Text;
command.Parameters.Add("@Rejections", SqlDbType.Int).Value = textBox5.Text;
command.Parameters.Add("@Unfulfilled", SqlDbType.Int).Value = textBox6.Text;
command.Parameters.Add("@TargetPerDay", SqlDbType.Int).Value = textBox7.Text;
command.Parameters.Add("@Audits_Assigned", SqlDbType.Int).Value = textBox10.Text;
command.Parameters.Add("@Total_Audits_Reviewed", SqlDbType.Int).Value = textBox12.Text;
command.Parameters.Add("@Audits_Carry_Forward", SqlDbType.Int).Value = textBox8.Text;
command.Parameters.Add("@Pending_Audits", SqlDbType.Int).Value = textBox9.Text;
command.Parameters.Add("@Comments", SqlDbType.VarChar).Value = comboBox3.Text;
SqlParameter returnParameter = command.Parameters.Add("RetVal", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
using (SqlDataReader oReader = command.ExecuteReader())
{
while (oReader.Read())
{
if (oReader["comments1"].ToString() == "0")
{
MessageBox.Show("CHECK THE COMMENTS AND THE GIVEN VALUE");
}
else
{
command.ExecuteNonQuery();
MessageBox.Show("Inserted data");
ClearTextBoxes(this);
button2.Enabled = false;
}
}
}
}
}
}
答案 0 :(得分:-2)
在我删除命令.ExecuteNonQuery()之后,我尝试使用command.ExecuteReader()和command.ExecuteNonQuery()执行同一命令。一切都按我的预期进行。
app:layout_constraintBottom_toTopOf="@+id/gL_right_margin"