C# sql server 查询多次但只有第一次查得到数据

先说结论

SqlParameter只能使用一次,第二次则失效
完整举例:
**PeServer.form.helper.ExcuteDataTable()**是我自己封装的C#工具类,用于执行数据库操作语句

string sqlStrA = "select TOP 1 * from t_Alarm with(nolock) where deviceId=@deviceId and AlarmCode=@AlarmCode order by Id desc";
string sqlStrB= "select TOP 1 Flag from t_Alarm with(nolock) where deviceId=@deviceId and AlarmCode=@AlarmCode order by Id desc";
SqlParameter[] para = new SqlParameter[]
            {
                new SqlParameter("@deviceId", DataAnalysis.HexToFloat(idd)),
                new SqlParameter("@AlarmCode",code)
            };
DataTable  sdr = PeServer.form.helper.ExcuteDataTable(sqlStrB, para);//第一次使用para,有结果
DataTable t_Alarm_DBdata = PeServer.form.helper.ExcuteDataTable(sqlStr, para);//第二次使用para,为null

解决办法:新建一个para2,不要使用同一个SqlParameter两次

string sqlStrA = "select TOP 1 * from t_Alarm with(nolock) where deviceId=@deviceId and AlarmCode=@AlarmCode order by Id desc";
string sqlStrB= "select TOP 1 Flag from t_Alarm with(nolock) where deviceId=@deviceId and AlarmCode=@AlarmCode order by Id desc";
SqlParameter[] para = new SqlParameter[]
{
    new SqlParameter("@deviceId", DataAnalysis.HexToFloat(idd)),
    new SqlParameter("@AlarmCode",code)
};
SqlParameter[] para = new SqlParameter[]
{
    new SqlParameter("@deviceId", DataAnalysis.HexToFloat(idd)),
    new SqlParameter("@AlarmCode",code)
};
DataTable  sdr = PeServer.form.helper.ExcuteDataTable(sqlStrB, para);//第一次使用para,有结果
DataTable t_Alarm_DBdata = PeServer.form.helper.ExcuteDataTable(sqlStr, para2);//没有重复使用para,有结果

我折腾了1个半小时,试过好几种方法

  • 同一个表同一个数据
  • 同一个表不同数据
  • 不同表不同数据
    发现都会导致第二个和之后的查询结果为null
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值