我试图存储消息,所以我用HeidiSql在mysql中创建了2个表,第一个是msg,第二个是用户。我写了一个存储过程来获取作为发送者的第一个参数的消息数,作为第二个参数的接收者,反之,我将此值存储在id变量中。我需要变量来计算2个人之间的消息。当我从java运行应用程序时,我总是得到id = 0。我无法理解这个错误。
...
sql="call getIdMsg(?,?,?)";
sql2="call addRecord(?,?,?,?)";
try (Connection conn= DriverManager.getConnection(db_url,username,password);
CallableStatement statement = conn.prepareCall(sql);
CallableStatement statement2 = conn.prepareCall(sql2)){
statement.setInt(1,sender);
System.out.println(sender);
statement.setInt(2,recipient);
System.out.println(recipient);
statement.registerOutParameter(3, Types.INTEGER);
statement.execute();
id=statement.getInt(3);
System.out.println("ID is: "+id);
statement2.setInt(1,sender);
statement2.setInt(2,recipient);
statement2.setInt(3,id);
statement2.setString(4,msg);
statement2.execute();
System.out.println("The record is been added");
}
catch (SQLException sqle){sqle.printStackTrace();}
...
这是我的sql代码:
BEGIN
set @id = ((select count(*) from msg WHERE sender = @thisrecipient and recipient = @thissender)+(SELECT COUNT(*) FROM msg WHERE sender = @thissender and recipient = @thisrecipient));
END
这些是我的参数:
thissender INT IN
此收件人INT IN
id INT OUT
你能帮我吗?