C# · 12月 27, 2021

C#’select count’sql命令错误地从sql server返回零行

我正在尝试从sql Server表返回rowcount. ‘net上的多个来源显示下面是一个可行的方法,但它继续返回’0行’.当我在管理工作室中使用该查询时,它工作正常并正确返回rowcount.我只是用简单的表名以及管理工作室倾向于喜欢的完全合格的名称来尝试它. using (sqlConnection cn = new sqlConnection()) { cn.ConnectionString = sqlConnectionString; cn.open(); sqlCommand commandRowCount = new sqlCommand(“SELECT COUNT(*) FROM [LBSExplorer].[dbo].[myTable]”,cn); countStart = System.Convert.ToInt32(commandRowCount.ExecuteScalar()); Console.WriteLine(“Starting row count: ” + countStart.ToString()); }

有什么可能导致它的建议吗?

解决方法 将CommandType设置为Text command.CommandType = CommandType.Text

关于.NET是否默认sqlCommandTypes键入Text的更多细节来自Damien_The_Unbeliever评论.

如果你在sqlCommand上拆开了CommandType的getter,你会发现有一些奇怪的特殊外壳,如果该值当前为0,它就会出现并表示它是Text / 1(类似地,从组件/设计的角度来看),默认值列为1).但实际内部值保留为0.