请教一个数据库操作返回值问题

时间:2022-12-11 18:54:48
当在进行数据库删除的时候,如果删除的这个id不存在,执行的函数返回是0还是-1? 
请问进行数据库操作的时候有没有可能出现-1的情况?

23 个解决方案

#1


应该是-1,用其它语言操作数据库时如果执行失败返回值都是-1

#2


不是很明白上面的意思,操作数据库时如果执行失败应该是抛出异常把,还会有-1返回吗?

#3


不知道你用的什么语言,我用的PB,
如果执行失败sqlca.sqlcode = - 1
sqlca.sqlerrtext里面是错误信息。

#4


如果碰到id不存在的情况,执行删除返回的结果是0还是-1?

#5


可能跟语言有关,执行失败是-1

#6


我到现在还不明白你说的执行失败具体是什么含义,是sql语句没有被执行还是咋的?
如果id不存在的情况,sql语句至少是执行了,只是影响的记录为0啊
在java中,如果执行失败会抛出异常的

#7


是语句执行了,但是没有成功。
你用Java的异常处理机制处理不就可以了,抛出异常后检查包含的错误信息。

#8


我明白你的意思了,是抛出的异常里面包含-1,表示删除不成功,对吧,

#9


是呀

#10


你有没有碰到用sql语句删除一个id不存在的记录会抱错的情况的,我没有碰到过
我也不知道你懂不懂java,但是这个原理还是差不多的,你看看下面这个程序

public int delete(Goods g) {
    int ret = -1;
    try {
      String sql = "Delete from tb_goods where ID=" + g.getID();
      ret = conn.executeUpdate(sql);
    }
    catch (Exception e) {
      ret = 0;
    }
    conn.close();
    return ret;

  }

你认为执行这段程序可能会出现那些结果呢?
Goods是一个自定义的商品类。

#11


"Delete from tb_goods where ID=" + g.getID();
---------------
ID是什么类型,如果是字符型的话,其两端需要加引号:
"Delete from tb_goods where ID=\"" + g.getID() + "\"";

#12


记不清转义字符是不是这样用的了。

#13


ID是int型的,主键,你就假设这个sql 语句符合语法规则,分析它执行会出现什么样的情况?

#14


如果ID的只不存在的话不应该出错,你看一下e包含的错误信息。
catch(Exception e){
e.printStackTrace();
ret = 0;
}

#15


一条正常的sql语句,在执行ret = conn.executeUpdate(sql);这条语句时可能会出现什么情况(假设我也不知道这个sql语句是否会执行异常,但是sql语句是符合语法规则的)?

#16


如果语法正确并且数据库已连接的话,如果删除的数据的主键被其他表引用,有可能删除失败。

#17


你先在查询分析器里面执行看看到底是哪儿的问题。

#18


恩,对

那上面那段程序ret = conn.executeUpdate(sql);如果异常发生ret应该是为-1值,但是在整个函数来说,ret不可能有-1值返回,你看呢?

#19


那是函数处理的结果,你可以改为在发生异常时返回-1
如:
public int delete(Goods g) {
    int ret = -1;
    try {
      String sql = "Delete from tb_goods where ID=" + g.getID();
      ret = conn.executeUpdate(sql);
    }
    catch (Exception e) {
      ret = - 1;
    }
    conn.close();
    return ret;

  }

#20


对,我的看法和你差不多,不过我一个朋友和我说如果删除的记录不存在的话返回值就是-1我就觉得不可思议了,所以跑上来找高人问了,呵呵

#21


你在try里String sql = "Delete from tb_goods where ID=" + g.getID();
      ret = conn.executeUpdate(sql);如果条件是真的。就运行 int ret = -1;这句。否则就运行catch那里面的(ret = 0;)

#22


有没有人知道下面一题的解法
用4个一位全加器组成一个先行进位的4位加法运算器,逻辑进位如下:
Ci+1=Xi+YiCi-1
Ci+1为进位输出,Xi是本地进位,Yi是传递进位Ci-1表示低一级的进位,要推导出4个先行
进位的逻辑表达式,说明其原理,并画出逻辑电路图

#23


mzh143() :

你在try里String sql = "Delete from tb_goods where ID=" + g.getID();
      ret = conn.executeUpdate(sql);如果条件是真的。就运行 int ret = -1;这句。否则就运行catch那里面的(ret = 0;)

------------------------------------
你的条件是真是什么情况?为什么会执行ret = -1;?

#1


应该是-1,用其它语言操作数据库时如果执行失败返回值都是-1

#2


不是很明白上面的意思,操作数据库时如果执行失败应该是抛出异常把,还会有-1返回吗?

#3


不知道你用的什么语言,我用的PB,
如果执行失败sqlca.sqlcode = - 1
sqlca.sqlerrtext里面是错误信息。

#4


如果碰到id不存在的情况,执行删除返回的结果是0还是-1?

#5


可能跟语言有关,执行失败是-1

#6


我到现在还不明白你说的执行失败具体是什么含义,是sql语句没有被执行还是咋的?
如果id不存在的情况,sql语句至少是执行了,只是影响的记录为0啊
在java中,如果执行失败会抛出异常的

#7


是语句执行了,但是没有成功。
你用Java的异常处理机制处理不就可以了,抛出异常后检查包含的错误信息。

#8


我明白你的意思了,是抛出的异常里面包含-1,表示删除不成功,对吧,

#9


是呀

#10


你有没有碰到用sql语句删除一个id不存在的记录会抱错的情况的,我没有碰到过
我也不知道你懂不懂java,但是这个原理还是差不多的,你看看下面这个程序

public int delete(Goods g) {
    int ret = -1;
    try {
      String sql = "Delete from tb_goods where ID=" + g.getID();
      ret = conn.executeUpdate(sql);
    }
    catch (Exception e) {
      ret = 0;
    }
    conn.close();
    return ret;

  }

你认为执行这段程序可能会出现那些结果呢?
Goods是一个自定义的商品类。

#11


"Delete from tb_goods where ID=" + g.getID();
---------------
ID是什么类型,如果是字符型的话,其两端需要加引号:
"Delete from tb_goods where ID=\"" + g.getID() + "\"";

#12


记不清转义字符是不是这样用的了。

#13


ID是int型的,主键,你就假设这个sql 语句符合语法规则,分析它执行会出现什么样的情况?

#14


如果ID的只不存在的话不应该出错,你看一下e包含的错误信息。
catch(Exception e){
e.printStackTrace();
ret = 0;
}

#15


一条正常的sql语句,在执行ret = conn.executeUpdate(sql);这条语句时可能会出现什么情况(假设我也不知道这个sql语句是否会执行异常,但是sql语句是符合语法规则的)?

#16


如果语法正确并且数据库已连接的话,如果删除的数据的主键被其他表引用,有可能删除失败。

#17


你先在查询分析器里面执行看看到底是哪儿的问题。

#18


恩,对

那上面那段程序ret = conn.executeUpdate(sql);如果异常发生ret应该是为-1值,但是在整个函数来说,ret不可能有-1值返回,你看呢?

#19


那是函数处理的结果,你可以改为在发生异常时返回-1
如:
public int delete(Goods g) {
    int ret = -1;
    try {
      String sql = "Delete from tb_goods where ID=" + g.getID();
      ret = conn.executeUpdate(sql);
    }
    catch (Exception e) {
      ret = - 1;
    }
    conn.close();
    return ret;

  }

#20


对,我的看法和你差不多,不过我一个朋友和我说如果删除的记录不存在的话返回值就是-1我就觉得不可思议了,所以跑上来找高人问了,呵呵

#21


你在try里String sql = "Delete from tb_goods where ID=" + g.getID();
      ret = conn.executeUpdate(sql);如果条件是真的。就运行 int ret = -1;这句。否则就运行catch那里面的(ret = 0;)

#22


有没有人知道下面一题的解法
用4个一位全加器组成一个先行进位的4位加法运算器,逻辑进位如下:
Ci+1=Xi+YiCi-1
Ci+1为进位输出,Xi是本地进位,Yi是传递进位Ci-1表示低一级的进位,要推导出4个先行
进位的逻辑表达式,说明其原理,并画出逻辑电路图

#23


mzh143() :

你在try里String sql = "Delete from tb_goods where ID=" + g.getID();
      ret = conn.executeUpdate(sql);如果条件是真的。就运行 int ret = -1;这句。否则就运行catch那里面的(ret = 0;)

------------------------------------
你的条件是真是什么情况?为什么会执行ret = -1;?