Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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/2/powershell/11.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 存储过程将null返回到结果集_Java_Stored Procedures_Jdbc_Resultset_Callable Statement - Fatal编程技术网

Java 存储过程将null返回到结果集

Java 存储过程将null返回到结果集,java,stored-procedures,jdbc,resultset,callable-statement,Java,Stored Procedures,Jdbc,Resultset,Callable Statement,在处理JDBC时,我遇到了一个问题,我在mysql中创建了一个表,其中包含员工信息employee_Id、Name、City、Salary和Year_加入,并且我还为同一数据库创建了一个存储过程,该存储过程接受两个输入,并根据加入年份更新员工的薪资。以下是存储过程: CREATE PROCEDURE proc(IN var1, IN var2) BEGIN UPDATE "TABLE" SET Salary=var1+Salary WHERE Year_of_Joining= var2 EN

在处理JDBC时,我遇到了一个问题,我在mysql中创建了一个表,其中包含员工信息employee_Id、Name、City、Salary和Year_加入,并且我还为同一数据库创建了一个存储过程,该存储过程接受两个输入,并根据加入年份更新员工的薪资。以下是存储过程:

CREATE PROCEDURE proc(IN var1, IN var2)
BEGIN
  UPDATE "TABLE" SET Salary=var1+Salary WHERE Year_of_Joining= var2
END
现在我通过java创建了一个到mysql数据库的数据库连接(该连接正在成功建立)

但是现在,当我在创建CallableStatement对象之后执行查询并尝试将callable对象的当前结果转换为结果集时,我得到了null。请帮我做这个。 代码如下:

// Creates connection with java:
Connection con= DriverManager.getConnection(url,username,pswrd);

// Now Calling the Stored procedure from mysql
CallableStatement col =  con.prepareCall("{call proc(?,?)}");

// gave values to the procedure
col.setDouble(1,20000);
col.setInt(2,2012);
col.execute();

// Returning Result set=null
ResultSet rs = col.getResultSet();
  • 首先,您没有在存储过程中设置输出参数
  • 比如:

    CREATE PROCEDURE proc(IN inputParam VARCHAR(255), OUT OutParam INT)...
    
    然后,检索输出参数(参数)的值 创建存储过程时指定为OUT或INOUT),JDBC 要求在语句执行之前使用 CallableStatement中的各种registerOutputParameter()方法 接口

    col.registerOutParameter("OutParam", Types.INTEGER);
    

  • 其次,UPDATE语句不返回结果集!仅SELECT语句返回要操作的结果集
  • 首先,您没有在存储过程中设置输出参数
  • 比如:

    CREATE PROCEDURE proc(IN inputParam VARCHAR(255), OUT OutParam INT)...
    
    然后,检索输出参数(参数)的值 创建存储过程时指定为OUT或INOUT),JDBC 要求在语句执行之前使用 CallableStatement中的各种registerOutputParameter()方法 接口

    col.registerOutParameter("OutParam", Types.INTEGER);
    

  • 其次,UPDATE语句不返回结果集!仅SELECT语句返回要操作的结果集

  • 我可能错了,但如果执行SELECT查询,则会返回结果集。。。您的是一个存储过程调用。是的,先生,您是对的…..我会记住这一点,我可能错了,但如果您执行SELECT查询,结果集将返回。。。您的是一个存储过程调用。是的,先生,您是对的……我会记住这一点,谢谢,先生……这是有道理的。这一点需要保留在mind Update语句不返回ResultSet中,先生,您是否想详细说明存储过程的输出参数。我看过一个教程,那个家伙只得到了输入参数的结果集。他根本没有任何输出参数。@sam-For UPDATE、INSERT、DELETE语句将整数作为输出返回(如受影响的行数或失败时返回-1),但SELECT语句将返回一个要操作的结果集,因为表格描述从数据库提取回java代码。所以,在SELECT语句的情况下,您不需要OUT参数来获取ResultSet。。。还有一个后续问题。是否有任何可能的方式,我可以有一个结果集返回的更新,插入,删除Statement。。。谢谢你的帮助。您的答案显示了您的编码技能。@sam-不,这是在内部触发select查询并使用
    boolean hadResults=col.execute();///检索结果集的唯一方法处理所有返回的结果集//而(hadResults){ResultSet rs=cos.getResultSet();//处理结果集…hadResults=col.getMoreResults();}
    @sam-另外,仔细阅读任何文档;就像其中一个是谢谢先生…这很有道理。这一点需要保留在mind Update语句不返回ResultSet中,先生,您是否想详细说明存储过程的输出参数。我看过一个教程,那个家伙只得到了输入参数的结果集。他根本没有任何输出参数。@sam-For UPDATE、INSERT、DELETE语句将整数作为输出返回(如受影响的行数或失败时返回-1),但SELECT语句将返回一个要操作的结果集,因为表格描述从数据库提取回java代码。所以,在SELECT语句的情况下,您不需要OUT参数来获取ResultSet。。。还有一个后续问题。是否有任何可能的方式,我可以有一个结果集返回的更新,插入,删除Statement。。。谢谢你的帮助。您的答案显示了您的编码技能。@sam-不,这是在内部触发select查询并使用
    boolean hadResults=col.execute();///检索结果集的唯一方法处理所有返回的结果集//而(hadResults){ResultSet rs=cos.getResultSet();//处理结果集…hadResults=col.getMoreResults();}
    @sam-另外,仔细阅读任何文档;就像其中一个是