C# 计算sql行数
这是我的SQL查询,我正在使用SQLServerManagementStudio和C进行开发 代码工作得很好。但我只想计算受影响的行数 我试过数数等几个步骤,但都不起作用C# 计算sql行数,c#,sql,sql-server,C#,Sql,Sql Server,这是我的SQL查询,我正在使用SQLServerManagementStudio和C进行开发 代码工作得很好。但我只想计算受影响的行数 我试过数数等几个步骤,但都不起作用 SELECT LevelDetails.App_ID, LevelDetails.Intro_ID, LevelDetails.Side, LevelDetails.SLevel, Top_up_details.topupdate, Top_up_details.Recharge_epin,
SELECT
LevelDetails.App_ID, LevelDetails.Intro_ID, LevelDetails.Side,
LevelDetails.SLevel,
Top_up_details.topupdate, Top_up_details.Recharge_epin,
Top_up_details.epin, Top_up_details.app_id AS Expr1
FROM
LevelDetails
INNER JOIN
Top_up_details ON LevelDetails.App_ID = Top_up_details.app_id
WHERE
(LevelDetails.Intro_ID = '1001')
试试这个:
SELECT count(*)
FROM LevelDetails INNER JOIN Top_up_details
ON LevelDetails.App_ID = Top_up_details.app_id
WHERE (LevelDetails.Intro_ID = '1001')
你看起来像这样吗 您可以将COUNTLevelDetails.App_ID添加为rowcount,以及提供总行数的select部分
SELECT
LevelDetails.App_ID, LevelDetails.Intro_ID, LevelDetails.Side,
LevelDetails.SLevel,
Top_up_details.topupdate, Top_up_details.Recharge_epin,
Top_up_details.epin, Top_up_details.app_id AS Expr1,
COUNT(LevelDetails.App_ID) OVER() As rowcount // gives you the total count also
FROM
LevelDetails
INNER JOIN
Top_up_details ON LevelDetails.App_ID = Top_up_details.app_id
WHERE
(LevelDetails.Intro_ID = '1001')
@OP这是您从注释中获取的代码
dtc = g1.return_dt("SELECT count(*) as app_c FROM LevelDetails
INNER JOIN Top_up_details ON LevelDetails.App_ID = Top_up_details.app_id
WHERE (LevelDetails.Intro_ID = '" + Session["appid"] + "')");
if (dtc.Rows.Count > 0)
{
Session["app_count"] = dt.Rows[0]["app_c"].ToString();
}
我认为在上面的代码中缺少Session[appid].ToString,但是在应用ToString之前检查null是很好的。下面是一个例子:
if(Session["appid"] != null)
{
dtc = g1.return_dt("SELECT count(*) as app_c FROM LevelDetails
INNER JOIN Top_up_details ON LevelDetails.App_ID = Top_up_details.app_id
WHERE (LevelDetails.Intro_ID = '" + Session["appid"].ToString() + "')");
if (dtc.Rows.Count > 0)
{
Session["app_count"] = dt.Rows[0]["app_c"].ToString();
}
}
另一个解决方案:
假设您使用上述查询获得的数据表是dtc,则只需检查表中返回的行数:
string sQuery = @" SELECT
LevelDetails.App_ID, LevelDetails.Intro_ID, LevelDetails.Side,
LevelDetails.SLevel, Top_up_details.topupdate,
Top_up_details.Recharge_epin, Top_up_details.epin,
Top_up_details.app_id AS Expr1
FROM
LevelDetails
INNER JOIN
Top_up_details ON LevelDetails.App_ID = Top_up_details.app_id
WHERE
(LevelDetails.Intro_ID = '1001')";
DataTable dtc = g1.return_dt(sQuery);
int iTotalRows = dtc.Rows.Count;
否则,要从数据库中获取计数,您可以使用sqlcommand.ExecuteScalar您可以使用计数*并选择您提到的查询不会影响任何行,它将返回一个数据表。这里的“影响”是什么意思?通过“选择”,您选择的是记录,因此对数据没有影响。您可以通过select从数据库中获取计数,也可以计算返回的记录数。@user3133175如果您的问题中提到的查询为数据表提供了正确的结果,为什么不使用dt.Rows.count获取总计数?感谢sql management stdio中的代码。。但当我尝试在C中实现这是我的代码时,同样的错误也会出现:dtc=g1.return_dtSELECT count*as app_C FROM LevelDetails internal JOIN Top_up_details ON LevelDetails.app_ID=Top_up_details.app_ID WHERE LevelDetails.Intro_ID='+Session[appid]+';如果dtc.Rows.Count>0{Session[app_Count]=dt.Rows[0][app_c].ToString;}@user3133175:-您得到的错误是什么?@user3133175您的问题中提到的查询为数据表提供了正确的结果,为什么不使用dt.Rows.Count来获取总计数?