从java准备好的语句中杀死MS SQL进程?

发布于 2024-11-05 02:47:07 字数 564 浏览 4 评论 0原文

我尝试使用 java 中的准备好的语句来终止 MS sql server (8) 进程。但我总是收到异常:com.microsoft.sqlserver.jdbc.SQLServerException:第 1 行:'@P0' 附近的语法不正确。

有什么想法吗?

public void killBlockingProcess(int spid)   {
    PreparedStatement ps = null;
    try {
        ps = connection.prepareStatement("kill ?");
        ps.setInt(1, spid);
        boolean res=ps.execute();
    } 
    catch (Exception ex) {
        logger.error(this + ",killBlockingProcess: " + ex.getMessage());
    }
    finally
    {
        try {ps.close(); } catch (Exception exp){}
    }
}

I try to kill a MS sql server (8) process with a prepared statement in java. But I always receive the exception: com.microsoft.sqlserver.jdbc.SQLServerException: Line 1: Incorrect syntax near '@P0'.

Any ideas?

public void killBlockingProcess(int spid)   {
    PreparedStatement ps = null;
    try {
        ps = connection.prepareStatement("kill ?");
        ps.setInt(1, spid);
        boolean res=ps.execute();
    } 
    catch (Exception ex) {
        logger.error(this + ",killBlockingProcess: " + ex.getMessage());
    }
    finally
    {
        try {ps.close(); } catch (Exception exp){}
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

め七分饶幸 2024-11-12 02:47:07

kill 只接受数字,不接受参数。运行:

"kill " + spid

针对连接,它应该可以工作。或者,让 SQL 扩展参数:

"declare @query varchar(max)
set @query = 'kill ' + ?
exec (@query)"

kill accepts only numbers, not parameters. Run:

"kill " + spid

Against the connection and it should work. Alternatively, let SQL expand the parameter:

"declare @query varchar(max)
set @query = 'kill ' + ?
exec (@query)"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文