C# C:从sql中计算并获取行的Id

C# C:从sql中计算并获取行的Id,c#,sql,C#,Sql,请问怎么了 我可以获取记录数,但无法获取每条记录的id值 我有这个函数来计算和获取id值: 我认为问题在于功能 表格1 然后我以另一种形式调用第一个函数来获取每个记录的数据 表格2 您的查询是计数查询,不能使用同一查询获取每个条目。您需要使用第二个查询: string query = "SELECT * FROM medicaments WHERE code_bare = @codebar"; 如果只需要ID字段,则仅在查询中包含该字段: string query = "SELECT ID

请问怎么了

我可以获取记录数,但无法获取每条记录的id值

我有这个函数来计算和获取id值: 我认为问题在于功能

表格1

然后我以另一种形式调用第一个函数来获取每个记录的数据 表格2


您的查询是计数查询,不能使用同一查询获取每个条目。您需要使用第二个查询:

string query = "SELECT * FROM  medicaments WHERE code_bare =  @codebar";
如果只需要ID字段,则仅在查询中包含该字段:

string query = "SELECT ID FROM  medicaments WHERE code_bare =  @codebar";

此外,如果您只是要迭代所有结果,那么您最好放弃计数查询,并在循环时对ExecuteReader的结果进行计数。

问题不在于您的函数,而在于您选择数据的方式,使用聚合函数COUNT*,它只返回行计数,如果添加MAXID,它将执行相同的操作,就像您将按ID对数据进行分组一样。问题是,在这种情况下,您将得到两列,一列是ID值,第二列是COUNT,但所有ID的值都是相同的

String countString = "SELECT MAX(ID), COUNT (*) FROM  medicaments WHERE code_bare =  @codebar  ";

哦,是的,谢谢,我从我的第一个函数中复制了字符串,没有引起注意

string query = "SELECT * FROM  medicaments WHERE code_bare =  @codebar";

计数变量呢?他需要改变这一点well@Kuzgun:是的,我说了第二个问题。。。不更改当前查询
String countString = "SELECT MAX(ID), COUNT (*) FROM  medicaments WHERE code_bare =  @codebar  ";
string query = "SELECT * FROM  medicaments WHERE code_bare =  @codebar";