首页 > 编程知识 正文

executenonquery用法,executenonquery异常

时间:2023-05-03 13:02:32 阅读:207640 作者:4612

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的才用?接小蜜蜂论坛顶帖机参数,不用@。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。