【发布时间】:2018-12-13 08:10:33
【问题描述】:
我正在尝试获取 Sql 数据库中的列记录计数并将结果显示在 MessageBox 中。
这是我的代码:
public DataTable CheckIfNameExist(string name)
{
con = Connect();
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "spCheckIfNameExist";
cmd.Parameters.AddWithValue("@Name", SqlDbType.NVarChar).Value = name;
MessageBox.Show(name);
Int32 totalNames = (Int32) cmd.ExecuteScalar();
string tNames = totalNames.ToString();
MessageBox.Show(tNames);
}
这是我的 sp:
@Name nvarchar(50) = null
As
Begin
SELECT COUNT(*) from OrdersSent where CustomerName LIKE @Name + '%'
End
问题:
它总是返回 0。
【问题讨论】:
-
您在
LIKE中使用参数的方式不正确......这就是查询本身返回0 结果的原因。 check this -
尝试在 cmd.executeScalar() 之前添加 cmd.CommandType=CommandType.Procedure
-
@Arjun 它是 CommandType.StoredProcedure 但我怀疑这里还有其他东西,因为错误应该导致异常
-
@Steve,我只是给他一个想法.. 是的,我也在想同样的事情.. 但是为什么在这种情况下代码没有引发异常,而是给他 0 结果
标签: c# sql-server stored-procedures ado.net executescalar