gpt4 book ai didi

java - 在 Java 中调用存储过程的简单方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:26 26 4
gpt4 key购买 nike

调用存储过程时,我使用以下代码:

    connection = getConnection();
stmt = connection.prepareCall("{call MPLOGIN (?, ?, ?, ?, ?, ?)}");
stmt.setString("VUSCD", uscd);
stmt.setString("VPWD", pwd);
stmt.setString("VPCSQ", pcsq);
stmt.setString("VHWID", hwid);
stmt.registerOutParameter("VLOGID", OracleTypes.VARCHAR);
stmt.registerOutParameter("VKQ", OracleTypes.VARCHAR);
stmt.execute();
String vlogid = stmt.getString("VLOGID");
String vkq = stmt.getString("VKQ");

为几个程序编写这个无聊的包装器没有问题,但如果有数百个程序,那真是一场噩梦有没有比这种方式更简单的调用存储过程的方法?编辑:我认为使用来自数据库的过程参数的代码生成器是优雅的方式,但我在 java 中一无所获

最佳答案

你可以,也许可以创建一个通用的包装器,沿着这些线:

public Map<String, String> SPWrapper(String call, Map<String, String> inParams, Map<String, OracleTypes> outParams)
{
connection = getConnection();
try
{
stmt = connection.prepareCall(call);
for(String inParam : inParams.keys())
{
stmt.setString(inParam, inParams.get(inParam));
}
for(String outParam : outParams.keys())
{
stmt.registerOutParameter(outParam, outParams.get(outParam));
}

stmt.execute();

Map<String,String> results = new HashMap<String, String>();
for(String outParam : outParams.keys())
{
results.put(outParam, stmt.getString(outParam));
}

return results;
}
catch (Exception e)
{
//LOG Exception
return new HashMap<String, String>();
}
finally
{
connection.close(); //Do not leave connections open.
}
}

您仍然需要传入 call 并声明变量,但至少您现在有一个通用包装器来处理您的所有调用。

关于java - 在 Java 中调用存储过程的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14275376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com