为什么Oracle的cmd.ExecuteNonQuery不执行update

string sql = "SELECT * FROM HD_Section WHERE HD_CompanyID=" + CompanyID + " AND (HD_Parameter=@Parameter OR HD_MenuID=@MenuID)";
            OleDbCommand cmd = new OleDbCommand(sql, con);
            cmd.Parameters.AddWithValue("@Parameter", Parameter);
            cmd.Parameters.AddWithValue("@MenuID", MenuID);
            OleDbDataReader reader = cmd.ExecuteReader();
            if (reader.Read())
            {
                //有值就更新
                int id = (int)reader["HD_ID"];
                //reader.Close();
                sql = "UPDATE HD_Section SET HD_Parameter=@Parameter,HD_MenuID=@MenuID,HD_HTML=@Html,HD_Title=@Title WHERE HD_ID=@ID";
                try
                {
                    cmd = new OleDbCommand(sql, con);
                    cmd.Parameters.AddWithValue("@ID", id);
                    cmd.Parameters.AddWithValue("@Parameter", Parameter);
                    cmd.Parameters.AddWithValue("@MenuID", MenuID);
                    cmd.Parameters.AddWithValue("@Html", Html);
                    cmd.Parameters.AddWithValue("@Title", MenuTitle);
                    int i = (int)cmd.ExecuteNonQuery();
                    cmd.Dispose();
                    return "{\"stat\":\"ok\",\"msg\":\"" + success+ i +id + "\"}";
//i值为0,id是有值的。update在office access 2019环境中是正确的,并且正确能更新的
                }
                catch (Exception ex)
                {
                    return "{\"stat\":\"err\",\"msg\":\""+fail+"(" + ex.Message + ")\"}";
                }
            }

发现cmd.ExecuteNonQuery();值为0,也没有执行update操作,这是为什么,try不到错误,很是困惑,以为是数据库死锁了,我查遍所有死锁的可能并去掉了,并且确保不产生accesss的.ldb文件,仍然发现无法update

WHERE 后面是不是不支持@ID数字型?
如果WHERE HD_ID=48,就可以执行,如果我用变量@ID替换,应该怎么赋值.


bool updated=false;
if (reader.Read())
{
     //有值就更新
     int id = (int)reader["HD_ID"];
     updated=true;
}
reader.Close();

if(updated)
{
    sql = "UPDATE HD_Section SET HD_Parameter=@Parameter,HD_MenuID=@MenuID,HD_HTML=@Html,HD_Title=@Title WHERE HD_ID=@ID";
    //...............

}
 

C# code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

bool updated=false;

if (reader.Read())

{

     //有值就更新

     int id = (int)reader["HD_ID"];

     updated=true;

}

reader.Close();

 

if(updated)

{

    sql = "UPDATE HD_Section SET HD_Parameter=@Parameter,HD_MenuID=@MenuID,HD_HTML=@Html,HD_Title=@Title WHERE HD_ID=@ID";

    //...............

 

}

read关闭后再执行更新命令

oledbcommand不支持@,必须用?,自己给自己解答吧!你这个是对接Oracle的吧,Oracle的才用?接小蜜蜂论坛顶帖机参数,不用@。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值