PRO*C中在执行SQL语句时如何判断数据库连接状态

PRO*C中在执行SQL语句时如何判断数据库连接状态,第1张

建议你写一个模板,用来对于数据库的 *** 作,当然里面会判断连接状态

这里有C#的代码,先发给你需要的那部分作为参考吧。

string connectionString = "Provider=MicrosoftJetOLEDB40;Data Source='C:/Documents and Settings/Administrator/桌面/淘淘/理财/吴静扬mdb'";

if (connection == null)

{

connection = new OleDbConnection(connectionString);

connectionOpen();

}

else if (connectionState == SystemDataConnectionStateClosed)//判断连接状态

{

connectionOpen();

}

else if (connectionState == SystemDataConnectionStateBroken)

{

connectionClose();

connectionOpen();

}

return connection;

}

}

希望上面的回答对你有所帮助,祝你早日解决问题。

怎样监控程序执行完之后数据库仍然在连接状态

添加一个记录集,

然后写下面的代码置记录集连接到数据库 ,对记录集 *** 作,也就实现对数据库 *** 作了,益佰制药搭配使用的!

记录集1置连接 (数据库_连接)

再用他的成员方法“读文本”进行 *** 作。[循环]

可直接在 v$session视图中查询。

语句如:

select from v$session where username='用户名';

其中用户名应为英文大写字母。

以下为视图各字段说明:

SADDR - session address

SID - session identifier 常用于链接其他列

SERIAL# - SID有可能会重复,当两个session的SID重复时,SERIAL#用来区别session(说白了某个session是由sid和serial#这两个值确定的)

AUDSID - audit session id。可以通过audsid查询当前session的sid。select sid from v$session where audsid=userenv('sessionid');

PADDR - process address,关联v$process的addr字段,通过这个可以查询到进程对应的session

USER# - 同于dba_users中的user_id,Oracle内部进程user#为0

USERNAME - session's username。等于dba_users中的username。Oracle内部进程的username为空。

COMMAND - session正在执行的sql id,1代表create table,3代表select。

TADDR - 当前的transaction address。可以用来关联v$transaction中的addr字段。

LOCKWAIT - 可以通过这个字段查询出当前正在等待的锁的相关信息。sid + lockwait与v$loc中的sid + kaddr相对应。

STATUS - 用来判断session状态。Active:正执行SQL语句。inactive:等待 *** 作。killed:被标注为杀死。

SERVER - 服务类型。

SCHEMA# - schema user id。Oracle内部进程的schema#为0。

SCHEMANAME - schema username。Oracle内部进程的为sys。

OSUSER - 客户端 *** 作系统用户名。

PROCESS - 客户端process id。

MACHINE - 客户端machine name。

TERMINAL - 客户端执行的terminal name。

PROGRAM - 客户端应用程序。比如ORACLEEXE或sqlplusexe

TYPE - session类型。

SQL_ADDRESS,SQL_HASH_VALUE,SQL_ID,SQL_CHILD_NUMBER - session正在执行的sql状态,和v$sql中的address,hash_value,sql_id,child_number对应。

PREV_SQL_ADDR,PREV_HASH_VALUE,PREV_SQL_ID,PREV_CHILD_NUMBER - 上一次执行的sql状态。

MODULE,MODULE_HASH,ACTION,ACTION_HASH,CLIENT_INFO - 应用通过DBMS_APPLICATION_INFO设置的一些信息。

FIXED_TABLE_SEQUENCE - 当session完成一个user call后就会增加的一个数值,也就是说,如果session挂起,它就不会增加。因此可以根据这个字段来监控某个时间点以来的session性能情况。例如,一个小时前某个session的此字段数值为10000,而现在是20000,则表明一个小时内其user call较频繁,可以重点关注此session的performance statistics。

ROW_WAIT_OBJ# - 被锁定行所在table的object_id。和dba_object中的object_id关联可以得到被锁定的table name。

ROW_WAIT_FILE# - 被锁定行所在的datafile id。和v$datafile中的file#关联可以得到datafile name。

ROW_WAIT_BLOCK# - 同上,对应块。

ROW_WAIT_ROW# - session当前正在等待的被锁定的行。

LOGON_TIME - session logon time

1、通过系统的“性能”来查看:

开始->管理工具->性能(或者是运行里面输入

mmc)然后通过

添加计数器添加

SQL

的常用统计

然后在下面列出的项目里面选择用户连接就可以时时查询到sql

server数据库连接数了。

不过此方法的话需要有访问那台计算机的权限,就是要通过windows账户登陆进去才可以添加此计数器。

2、通过系统表来查询:

SELECT

FROM

[Master][dbo][SYSPROCESSES]

WHERE

[DBID]

IN

(

SELECT

[DBID]

FROM

[Master][dbo][SYSDATABASES]

WHERE

NAME='databaseName'

)

databaseName

是需要查看的数据库,然后查询出来的行数,就是当前的sql

server数据库连接数。不过里面还有一些别的状态可以做参考用。

3、通过系统过程来查询:

SP_WHO

'loginName'

loginName

是当然登陆Sql的用户名,一般程序里面都会使用一个username来登陆SQL这样通过这个用户名就能查看到此用户名登陆之后占用的连接了。

如果不写loginName,那么返回的就是所有的sql

server数据库连接。

通常,mysql的最大连接数默认是100, 最大可以达到16384。

1、查看最大连接数:

show variables like '%max_connections%';

2、修改最大连接数

方法一:修改配置文件。推荐方法一

进入MySQL安装目录 打开MySQL配置文件 myini 或 mycnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MySQL即可

方法二:命令行修改。不推荐方法二

命令行登录MySQL后。设置新的MySQL最大连接数为200:

MySQL> set global max_connections=200。

这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效,一旦mysql重启,又会恢复到初始状态。因为mysql启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。

以上就是关于PRO*C中在执行SQL语句时如何判断数据库连接状态全部的内容,包括:PRO*C中在执行SQL语句时如何判断数据库连接状态、怎样监控程序执行完之后数据库仍然在连接状态、oracle如何查看当前有哪些用户连接到数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9791018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存