首页 新闻 搜索 专区 学院

oracle 在程序中执行 update in 语句不成功【2执行1返回0条受影响行数】,而在pl/sql 中能成功

0
悬赏园豆:30 [待解决问题]
   public bool MovePerson(Dictionary<string, string> mobileList)
        {
       1     string strSql = "update table set groupid = :groupid where mobile in (:mobile)";
            OracleParameter[] paras = { 
                                          new OracleParameter(":groupid", OracleDbType.Varchar2),
                                          new OracleParameter(":mobile", OracleDbType.Varchar2) 
                                      };
            paras[0].Value = mobileList["groupid"];
            paras[1].Value = mobileList["mobilelist"];
 
         2   int row = DbHelperOra.ExecuteSql(strSql, conn, paras);
            if (row > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
The Mechanic的主页 The Mechanic | 初学一级 | 园豆:114
提问于:2012-12-12 17:59
< >
分享
所有回答(3)
0

conn?这个没链接数据库

伏草惟存 | 园豆:1420 (小虾三级) | 2012-12-12 21:17

int row = DbHelperOra.ExecuteSql(strSql, conn, paras);

conn 就是连接字符串

支持(0) 反对(0) The Mechanic | 园豆:114 (初学一级) | 2012-12-13 09:17
0

new OracleParameter(":groupid", // 这个不用带冒号 ,如下:

new OracleParameter("groupid", OracleDbType.Varchar2),

Launcher | 园豆:45045 (高人七级) | 2012-12-13 09:20

这个没有关系的

支持(0) 反对(0) The Mechanic | 园豆:114 (初学一级) | 2012-12-13 09:33

@瓦罐: 因为我没法调试你的代码,所以我只能把我常用的方式告诉你,而且我只能猜测,你是不是隐瞒了一些重要的信息,比如 DbHelperOra.ExecuteSql(strSql, conn, paras) 有没有异常?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2012-12-13 09:42

@Launcher: 没有异常只是返回0行受影响的行数

支持(0) 反对(0) The Mechanic | 园豆:114 (初学一级) | 2012-12-13 13:45

@瓦罐: 还是那句话,我不知道你的代码怎么写的,我只能给出一些测试的建议,比如虽然返回0,你有检查过数据库中的数据更改了吗?再比如,你有试过直接使用DbCommand执行 Update 语句,而不使用参数化的形式来更新吗?

总之,如果我能打开你的项目,我很快就能调试出问题,但是我不能,我只能猜,只能假设你这么做,那没做,你漏掉了这些信息,或者漏掉了那些信息。

如果你会调试程序,这个问题对你来说也很简单。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2012-12-13 13:50
0

我猜想是因为oracle把你传入的:mobile作为一个值处理了,而你程序的本意是传入的是个值的列表;

如果你不使用宿主变量,应该结果就是正确的。

_liao | 园豆:236 (菜鸟二级) | 2013-03-25 17:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册