命令执行有问题
Having troubles with a command's execution
所以,基本上我所做的是,在 TextBox 上添加诊断后,我检查是否已经有同名的诊断。连接工作正常,但是,我在此处的这一行中执行命令时遇到困难:
var count = (int)cmd.ExecuteNonQuery();
这是完整的方法
protected void MesmoDiagnostico_ServerValidate(object source, ServerValidateEventArgs args)
{
string connectionString = ConfigurationManager.ConnectionStrings["BDClinica"].ConnectionString;
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("Select COUNT(*) from Diagnosticos Where Diagnostico_Nome=@Diagnostico_Nome", connection);
connection.Open();
cmd.Parameters.AddWithValue("@Diagnostico_Nome", source);
var count = (int)cmd.ExecuteNonQuery();
if (count > 0)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
connection.Close();
}
我错过了什么吗?谢谢!
根据MSDN,ExecuteNonQuery
用于执行目录或UPDATE
/INSERT
/DELETE
操作和returns的数量行受影响。通过使用 COUNT
,您仍在寻找 "number of rows",但它是作为查询执行的,而不是更新。
由于您只需要一条数据,从技术上讲是第一行的第一列,您可以使用 ExecutScalar
代替。
这几乎就是您需要的代码:
SqlConnection con = new SqlConnection(Settings.Default.FrakoConnectionString);
SqlCommand maxcommand = new SqlCommand("SELECT MAX(Counter) AS max FROM ppartikulieren", con);
try
{
con.Open();
max = (int)maxcommand.ExecuteScalar() + 1;
}
catch (Exception ex)
{
MessageBox.Show("Fout bij het plakken:\n" + ex.Message, "Frako planner", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
finally
{
con.Close();
}
当然你也可以使用using
语句。但关键是你真的需要转换 ExecuteScalar
.
的输出
所以,基本上我所做的是,在 TextBox 上添加诊断后,我检查是否已经有同名的诊断。连接工作正常,但是,我在此处的这一行中执行命令时遇到困难:
var count = (int)cmd.ExecuteNonQuery();
这是完整的方法
protected void MesmoDiagnostico_ServerValidate(object source, ServerValidateEventArgs args)
{
string connectionString = ConfigurationManager.ConnectionStrings["BDClinica"].ConnectionString;
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("Select COUNT(*) from Diagnosticos Where Diagnostico_Nome=@Diagnostico_Nome", connection);
connection.Open();
cmd.Parameters.AddWithValue("@Diagnostico_Nome", source);
var count = (int)cmd.ExecuteNonQuery();
if (count > 0)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
connection.Close();
}
我错过了什么吗?谢谢!
根据MSDN,ExecuteNonQuery
用于执行目录或UPDATE
/INSERT
/DELETE
操作和returns的数量行受影响。通过使用 COUNT
,您仍在寻找 "number of rows",但它是作为查询执行的,而不是更新。
由于您只需要一条数据,从技术上讲是第一行的第一列,您可以使用 ExecutScalar
代替。
这几乎就是您需要的代码:
SqlConnection con = new SqlConnection(Settings.Default.FrakoConnectionString);
SqlCommand maxcommand = new SqlCommand("SELECT MAX(Counter) AS max FROM ppartikulieren", con);
try
{
con.Open();
max = (int)maxcommand.ExecuteScalar() + 1;
}
catch (Exception ex)
{
MessageBox.Show("Fout bij het plakken:\n" + ex.Message, "Frako planner", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
finally
{
con.Close();
}
当然你也可以使用using
语句。但关键是你真的需要转换 ExecuteScalar
.