所以,基本上我正在做的是,在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();
}
我错过了什么吗?谢谢!
答案 0 :(得分:1)
根据MSDN,ExecuteNonQuery
用于执行目录或UPDATE
/ INSERT
/ DELETE
操作,并返回受影响的行数。通过使用COUNT
,您仍然在寻找“行数”,但它是作为查询执行的,而不是更新。
由于您只需要一个数据,从技术上讲是第一行的第一列,您可以使用ExecutScalar
代替。
答案 1 :(得分:0)
这几乎是您需要的确切代码:
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
的输出。