ExecuteNonQuery引发了System.ArgumentException类型异常

本文介绍了解决开发中遇到的一种常见异常的方法。首先应检查错误位置的返回类型是否正确,例如预期为DataTable却误设为int;其次确认操作所涉及的数据ID是否准确无误。
 

 

  当开发时我们出现这个异常时,如果你搜索答案,得到更多的可能是一些复杂的东西,其实,首先我们应该检查一下出错地方的返回类型,比如,应该得到一个DataTable来,我们却写成了int类型,我就是这样,查询时明明应该用DataTable来接受,但是,我却写成了int类型来接受是否得到,这样就出现了这样一个异常。别想的太复杂了。

  其次,如果不是返回类型的粗心,那么,一般这个情况还有一个错误就是未知ID,检查一下你所做的操作是否能和数据对上号,比如,更新时,是否忘记了把ID给声明清楚呢...... 

 

报错:Dao4.Dao40(+ 1重载) "Dao4":using语句中使用的类型必须可隐式转换为”System.IDisposable" using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _2 { class Dao4 { private readonly string _conn; // 公共属性暴露连接对象 public SqlConnection Connection { get; private set; } // 构造函数1:从配置文件获取连接字符串 public Dao4() { if (string.IsNullOrEmpty(_conn)) { // 默认连接字符串(仅用于开发环境) _conn = "Server=LAPTOP-265KA3NF;Database=pointnote;Integrated Security=True;"; } } // 构造函数2:允许传入自定义连接字符串 public Dao4(string connectionString) { if (string.IsNullOrWhiteSpace(connectionString)) throw new ArgumentException("连接字符串不能为空", nameof(connectionString)); _conn = connectionString; } public void Connect() { // 实际项目中应从配置读取连接字符串 Connection = new SqlConnection(_conn); Connection.Open(); } public int ExecuteParameterized(string sql, List<SqlParameter> parameters) { using (SqlCommand cmd = new SqlCommand(sql, Connection)) { // 添加所有参数 cmd.Parameters.AddRange(parameters.ToArray()); // 执行并返回受影响行数 return cmd.ExecuteNonQuery(); } } // 增加一个方法用于执行查询并返回SqlDataReader public SqlDataReader Read(string sql) { SqlCommand cmd = new SqlCommand(sql, Connection); return cmd.ExecuteReader(); } // 关闭连接的方法(可选) public void Disconnect() { if (Connection != null && Connection.State != ConnectionState.Closed) { Connection.Close(); } } // 添加 Close 方法 public void Close() { if (Connection != null && Connection.State != ConnectionState.Closed) { Connection.Close(); Connection = null; } } // 实现 IDisposable 模式 public void Dispose() { Close(); GC.SuppressFinalize(this); } internal int Execute(string sql) { int rowsAffected = 0; try { using (SqlCommand cmd = new SqlCommand(sql, Connection)) { rowsAffected = cmd.ExecuteNonQuery(); } } catch (SqlException ex) { // 记录日志或进行其他异常处理操作 Console.WriteLine($"执行SQL语句时发生错误:{ex.Message}"); } return rowsAffected; } } } 怎么改
最新发布
07-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值