如何将SQL COUNT查询返回的记录数赋值给C#变量
操作步骤
- 首先修正你现有代码的变量定义错误:
int: CountValue;要修改为int CountValue; - 将构造好的SQL查询字符串赋值给command对象的
CommandText属性 - 调用command对象的
ExecuteScalar()方法执行查询,该方法会直接返回查询结果第一行第一列的值,正好匹配你返回单个计数的需求 - 将返回的object类型结果转换为int类型后赋值给
CountValue变量 - 完成查询后及时关闭数据库连接,避免资源占用
完整可用代码参考
int CountValue; cnn.ConnectionString = CnnStr; cnn.Open(); OleDbCommand command = new OleDbCommand(); command.Connection = cnn; string query = "SELECT Count(c.Cell_ID) AS CountOfCell_ID FROM Cells AS c HAVING(((Exists(SELECT 1 FROM ΠΑΡΟΝΤΕΣ as cu WHERE c.Cell_ID = cu.CellID)) = False));"; // 核心赋值逻辑 command.CommandText = query; CountValue = (int)command.ExecuteScalar(); // 结束 cnn.Close();
稳妥兼容方案:如果要避免极端场景下的空值转换报错,可以调整转换逻辑如下:
CountValue = (int)(command.ExecuteScalar() ?? 0);
更规范的资源管理写法
推荐把连接和Command对象包在using代码块中,会自动完成资源释放,不需要手动调用Close:
int CountValue; string query = "SELECT Count(c.Cell_ID) AS CountOfCell_ID FROM Cells AS c HAVING(((Exists(SELECT 1 FROM ΠΑΡΟΝΤΕΣ as cu WHERE c.Cell_ID = cu.CellID)) = False));"; using (OleDbConnection cnn = new OleDbConnection(CnnStr)) using (OleDbCommand command = new OleDbCommand(query, cnn)) { cnn.Open(); CountValue = (int)(command.ExecuteScalar() ?? 0); }
内容的提问来源于stack exchange,提问作者ΝΙΚΟΣ ΠΑΠΑΣΤΕΦΑΝΟΥ
相关产品推荐
相关产品推荐

