Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在我的postgresql数据库中插入值_Java_Postgresql - Fatal编程技术网

Java 无法在我的postgresql数据库中插入值

Java 无法在我的postgresql数据库中插入值,java,postgresql,Java,Postgresql,在java代码中: CallableStatement cs=null; int bcode=1; int dcode=3; int noftab=3; String sql2 = "{? = call public.insertdepttables('"+bcode+"','"+dcode+"','"+noftab+"')}"; cs = conn.prepareCall(sql2); cs.registerOutParameter(1,Types.INTEGER); rset1=cs.get

在java代码中:

CallableStatement cs=null;
int bcode=1;
int dcode=3;
int noftab=3;
String sql2 = "{? = call public.insertdepttables('"+bcode+"','"+dcode+"','"+noftab+"')}";
cs = conn.prepareCall(sql2);
cs.registerOutParameter(1,Types.INTEGER);
rset1=cs.getInt(1);
system.out.println("success="+rest1);
在insertdepttables中:(my db postgresql中的函数)

实际上,我需要在postgresql中的t_dept_表中插入no_表(即3)times行。所以我所做的就是在数据库中编写函数。我需要从java代码中调用它。所以我在那里使用了可调用的stmt:

我的输出应如下所示(以db为单位):

bcode dcode table_no
1      3     1
1      3     2
1      3     3
现在在执行java代码时, 我得到的结果是

控制台:

success=3

但是在数据库中没有插入3行,但是在my db中执行函数时,会插入值。所以我的db函数没有错误。请帮我整理一下。

您确定没有忘记实际调用语句,例如:

cs.executeQuery();
...
cs.close();
顺便说一句,您的任务可以在没有函数的情况下完成,例如(不要使用字符串连接,使用参数值):


您是否缺少事务和提交?首先为什么要使用循环(和函数)?这可以通过一个简单的insert语句来实现吗?@a_horse_和_no_name想提到这一点,但无论如何,很有趣的是,为什么OP table不是updated@RomanPekar:我猜这是一个缺少的
commit()
,正如user2310289所建议的(或者Java代码正在连接到另一个数据库)@一匹没有名字的马可能会被添加为建议/答案?给定cs.close();但是它不起作用。。pl帮我整理一下我在你的代码中没有看到execute,请提供你实际的codeint bcode=1;int-dcode=3;int noftab=3;字符串sql2=“{?=call public.insertdepttables(“+bcode+”,“+dcode+”,“+noftab+”)}”;cs=conn.prepareCall(sql2);cs.registerOutParameter(1,Types.INTEGER);cs.execute();rset1=cs.getInt(1);System.out.println(“hiii成功”+rset1);cs.close();
cs.executeQuery();
...
cs.close();
String stm = "insert into t_dept_tables(branch_code,dept_code,table_no) values(branch_code,dept_code,no_tables); VALUES(?, ?, ?)";
cs = con.prepareStatement(stm);
cs.setInt(1, id);
cs.setInt(3, id);
cs.setInt(3, id);
rs = cs.executeUpdate();