gpt4 book ai didi

java - "Incorrect syntax near ' { '"调用 SQL Server 存储过程

转载 作者:行者123 更新时间:2023-11-29 03:22:01 26 4
gpt4 key购买 nike

我正在尝试从我的存储过程中获取结果,但我得到了 ERROR: Incorrect syntax near '{'. 。我看到许多示例对 sql string 使用相同的东西,但我不确定为什么会出现错误。我有相同数量的参数...

当我像这样在我的数据库中执行我的存储过程时

exec rptGetAssetbyLocation '2122' 我得到了我的 5 列

如何使用 Callable Statement 取回结果?我对 registerOutParameter 做错了什么?

try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver:...";
String username = "username";
String password = "password";

sb.append("<table id=\"examplee\" border=1 >"
+ "<tr><td>ID</td><td>TAG</td><td>NAME</td>"
+ "<td>MODEL</td><td>SERIAL NUMBER</td></tr>");

String query = "{exec rptGetAssetbyLocation(?,?,?,?,?)}";
Connection conn = DriverManager.getConnection(url, username, password);
CallableStatement stmt = conn.prepareCall(query);
stmt.registerOutParameter(1, java.sql.Types.INTEGER);
stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
stmt.registerOutParameter(3, java.sql.Types.VARCHAR);
stmt.registerOutParameter(4, java.sql.Types.VARCHAR);
stmt.registerOutParameter(5, java.sql.Types.VARCHAR);


ResultSet rs = stmt.executeQuery();


while (rs.next())
{
int id = rs.getInt("ID");
String tag = rs.getString("tag");
String name = rs.getString("name");
String model = rs.getString("model");
String serNum = rs.getString("serialNumber");

sb.append("<tr><td>" + id + "</td>"
+ "<td>" + tag + "</td>"
+ "<td>" + name + "</td>" +
"<td>" + model + "</td>" +
"<td>" + serNum + "</td></tr>");
}
sb.append("</table>");
}
catch(Exception e)
{
sb.append("<h1>ERROR: " + e.getMessage() + "</h1>");
}
sb.append("</body></html>");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(sb);
}

最佳答案

如果您在 SQL Server Management Studio (SSMS) 中运行存储过程的所有操作是

exec rptGetAssetbyLocation '2122' 

那么你可能不需要弄乱输出参数,你可以只使用一个输入参数来调用你的存储过程,然后像这样从 ResultSet 中检索结果

String query = "exec rptGetAssetbyLocation ?";
Connection conn = DriverManager.getConnection(url, username, password);
CallableStatement stmt = conn.prepareCall(query);
stmt.setString(1, "2122");
ResultSet rs = stmt.executeQuery();
while (rs.next())
{
int id = rs.getInt("ID");
String tag = rs.getString("tag");
String name = rs.getString("name");
String model = rs.getString("model");
String serNum = rs.getString("serialNumber");
// ...and do other useful stuff
}

关于java - "Incorrect syntax near ' { '"调用 SQL Server 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23047243/

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