如何使用存储过程通过 java ReSTful 网络服务中的输入参数值来完成更新和创建记录操作
How to user stored procedure to fulfill update & create record operations by input parameters values in java ReSTful web services
我正在尝试创建 Web 服务以使用相同的存储过程创建和更新用户,因为我正在通过 ReST 客户端传递以下输入
{
"user_id": "23",
"user_email_id": "a@a.a",
"user_password": "fdsdsdf",
"firstname": "sdfsdf",
"lastname": "sfdsdfds",
"mobile_number": "1234567890",
"user_status": 1,
"isdeleted": 0,
"created_by": 1,
"profile_picturename": "kfksdjfhksjd",
"address": "sfdsdfsd"
}
&我的JDBC代码是
try {
connection = this.getConnection();
callableStatement = connection
.prepareCall("{ call sp_user_upsert(?,?,?,?,?,?,?,?,?,?,?) } ");
// this.setIntToCallableStatement("pv_user_id",
// userInputModel.getUser_id());
if (userInputModel.getUser_id() != null) {
if (!(userInputModel.getUser_id().toString().isEmpty()))
callableStatement.setInt("pv_user_id",
userInputModel.getUser_id());
else
callableStatement.setString("pv_user_id", "");
} else {
callableStatement.setString("pv_user_id", "");
}
callableStatement.setString("pv_user_email_id",
userInputModel.getUser_email_id());
我可以更新用户记录,但如果我尝试使用参数创建新用户
{
"user_id": "",
"user_email_id": "a@a.a",
"user_password": "fdsdsdf",
"firstname": "sdfsdf",
"lastname": "sfdsdfds",
"mobile_number": "1234567890",
"user_status": 1,
"isdeleted": 0,
"created_by": 1,
"profile_picturename": "kfksdjfhksjd",
"address": "sfdsdfsd"
}
创建一个新记录,它显示 HTTP/1.1 400 休息客户端上的错误请求状态,
任何人都可以帮我解决这个问题或任何好的创建用户的建议
我正在使用 MySql 数据库
提前致谢
如果不了解您正在使用的存储过程和数据库系统,很难回答这个问题。
我的猜测是,您为未知 user_id 填充一个字符串,但如果已知,则填充一个 int。一些数据库会检查类型签名来解析存储过程,您可能只会收到错误消息“SP not found because pv_user_id being a String. Try to put 0, -1 or set the parameter to null.
我正在尝试创建 Web 服务以使用相同的存储过程创建和更新用户,因为我正在通过 ReST 客户端传递以下输入
{
"user_id": "23",
"user_email_id": "a@a.a",
"user_password": "fdsdsdf",
"firstname": "sdfsdf",
"lastname": "sfdsdfds",
"mobile_number": "1234567890",
"user_status": 1,
"isdeleted": 0,
"created_by": 1,
"profile_picturename": "kfksdjfhksjd",
"address": "sfdsdfsd"
}
&我的JDBC代码是
try {
connection = this.getConnection();
callableStatement = connection
.prepareCall("{ call sp_user_upsert(?,?,?,?,?,?,?,?,?,?,?) } ");
// this.setIntToCallableStatement("pv_user_id",
// userInputModel.getUser_id());
if (userInputModel.getUser_id() != null) {
if (!(userInputModel.getUser_id().toString().isEmpty()))
callableStatement.setInt("pv_user_id",
userInputModel.getUser_id());
else
callableStatement.setString("pv_user_id", "");
} else {
callableStatement.setString("pv_user_id", "");
}
callableStatement.setString("pv_user_email_id",
userInputModel.getUser_email_id());
我可以更新用户记录,但如果我尝试使用参数创建新用户
{
"user_id": "",
"user_email_id": "a@a.a",
"user_password": "fdsdsdf",
"firstname": "sdfsdf",
"lastname": "sfdsdfds",
"mobile_number": "1234567890",
"user_status": 1,
"isdeleted": 0,
"created_by": 1,
"profile_picturename": "kfksdjfhksjd",
"address": "sfdsdfsd"
}
创建一个新记录,它显示 HTTP/1.1 400 休息客户端上的错误请求状态,
任何人都可以帮我解决这个问题或任何好的创建用户的建议
我正在使用 MySql 数据库
提前致谢
如果不了解您正在使用的存储过程和数据库系统,很难回答这个问题。
我的猜测是,您为未知 user_id 填充一个字符串,但如果已知,则填充一个 int。一些数据库会检查类型签名来解析存储过程,您可能只会收到错误消息“SP not found because pv_user_id being a String. Try to put 0, -1 or set the parameter to null.