You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SqlConnection无ExecuteScalar定义报错原因及修复方案,附代码

问题分析与修复方案

ExecuteScalar() 所属类库

ExecuteScalar() 是SqlCommand类的实例方法:

  • 在.NET Framework中属于System.Data.SqlClient程序集,需添加using System.Data.SqlClient;指令
  • 在.NET Core/.NET 5及以上版本中属于Microsoft.Data.SqlClient程序集,需添加using Microsoft.Data.SqlClient;指令

CS1061错误原因

  1. 调用对象错误:代码里错误调用了SqlConnection的ExecuteScalar()方法,但SqlConnection类本身没有这个方法——该方法仅属于SqlCommand类,这是触发错误的核心原因。
  2. 冗余代码:cmd.ExecuteNonQuery();完全多余,ExecuteNonQuery()用于执行无返回结果的增删改操作,此处是查询场景,不需要调用。
  3. SQL注入风险:直接通过字符串拼接生成SQL语句(WHERE KNR = '" + WNR_KNR[1] + "'),存在严重安全漏洞。

修复方案

  1. 将con.ExecuteScalar()改为cmd.ExecuteScalar(),调用正确的对象方法。
  2. 删除冗余的cmd.ExecuteNonQuery();语句。
  3. 用参数化查询替换字符串拼接,避免SQL注入。
  4. 推荐使用using语句自动管理连接和命令资源(无需手动调用Close(),会自动释放)。

修复后的完整代码

// 检查条目是否存在
string query = "SELECT COUNT(KNR) FROM AuswertungDurchlaufzeit WHERE KNR = @KNR";
using (SqlConnection con = new SqlConnection(connectionstring))
using (SqlCommand cmd = new SqlCommand(query, con))
{
    // 添加参数,避免SQL注入
    cmd.Parameters.AddWithValue("@KNR", WNR_KNR[1]);
    con.Open();
    Int32 count = (Int32)cmd.ExecuteScalar();
    
    // 存在则执行UPDATE,不存在则执行INSERT
    if (count > 0)
    {
        return;
    }
    else
    {
        // 此处编写INSERT逻辑
    }
}

内容的提问来源于stack exchange,提问作者user20356767

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:15:33