我正在尝试计算行数并传递该计数值以执行某些逻辑。以下是代码:
static public int GetNoImagesofMakeID(int makeID)
{
string sql = "Select COUNT(*) from makeImages";
SqlDataAdapter da = new SqlDataAdapter(sql, ConnectionString);
DataTable dt = new DataTable();
da.Fill(dt);
return Convert.ToInt32(dt.Rows.Count);
}
protected void hideUnhideFileUpload(int makeID)
{
int count = caravans.GetNoImagesofMakeID(makeID);
if (count >= 10)
{
FileUpload2.Enabled = false;
}
else
{
FileUpload2.Enabled = true;
}
}
我不知道计数总是为什么原因1.我在SQL Server上检查了相同的查询,它运行正常。但是,这里dt.rows.count总是返回1.
任何帮助都将受到高度赞赏。感谢。
答案 0 :(得分:7)
代码返回的行数而不是COUNT(*)的结果。该SQL语句将始终只返回一行。您可以只运行命令:
,而不是填充数据适配器SqlCommand cmd = someSQLConnection.CreateCommand();
cmd.CommandText = "Select COUNT(*) from makeImages";
return Convert.ToInt32(cmd.ExecuteScalar());
答案 1 :(得分:1)
您的查询返回一行,其中包含一个值(行数),因此dt.Rows.Count
正确返回1(表示查询返回1行)。
使用数据表,您会在dt.Rows[0][0]
(数据表的第0列第0列)找到查询返回的计数
答案 2 :(得分:1)
计数()始终返回一行,而不管它计算的行数。计数()是标量值。您需要做的是读取记录集中返回的值。
有关此问题中计数的详细信息:SQL Return code from Select count(*)
答案 3 :(得分:1)
为什么要获取表行计数,而不是计数查询返回的值,因为这只返回单行?
return Convert.ToInt32(dt.Rows[0][0]);