在oracle数据库中查询出应用程序中没有关闭的连接所执行的语句
答案:2 悬赏:0 手机版
解决时间 2021-01-03 20:46
- 提问者网友:不爱我么
- 2021-01-02 21:46
现在怀疑java程序中可能有没关闭的数据库连接,想通过oracle语句来定位代码中所执行的语句,请问这样的语句应该怎么写?
最佳答案
- 五星知识达人网友:走死在岁月里
- 2021-01-02 23:17
select s.sid,sql.sql_text from v$session s,v$sql sql
where s.sql_id=sql.sql_id;
where s.sql_id=sql.sql_id;
全部回答
- 1楼网友:归鹤鸣
- 2021-01-02 23:52
public void testoracle()
{
connection con = null;// 创建一个数据库连接
preparedstatement pre = null;// 创建预编译语句对象,一般都是用这个而不用statement
resultset result = null;// 创建一个结果集对象
try
{
class.forname("oracle.jdbc.driver.oracledriver");// 加载oracle驱动程序
system.out.println("开始尝试连接数据库!");
string url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:xe";// 127.0.0.1是本机地址,xe是精简版oracle的默认数据库名
string user = "system";// 用户名,系统默认的账户名
string password = "147";// 你安装时选设置的密码
con = drivermanager.getconnection(url, user, password);// 获取连接
system.out.println("连接成功!");
string sql = "select * from student where name=?";// 预编译语句,“?”代表参数
pre = con.preparestatement(sql);// 实例化预编译语句
pre.setstring(1, "刘显安");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
result = pre.executequery();// 执行查询,注意括号中不需要再加参数
while (result.next())
// 当结果集不为空时
system.out.println("学号:" + result.getint("id") + "姓名:"
+ result.getstring("name"));
}
catch (exception e)
{
e.printstacktrace();
}
finally
{
try
{
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
system.out.println("数据库连接已关闭!");
}
catch (exception e)
{
e.printstacktrace();
}
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯