急,急,急,在建oracle数据库低层时OracleCommand里为什么没CommandTimeout??

sunboyyun 2009-12-09 04:18:38
在vs 2005中搭建数据库低层时,
OracleCommand sqlSelectCommand = new OracleCommand(argSqlString, dbConnection);
sqlSelectCommand.CommandTimeout = 300;是可以的
但是在VS 2003中
OracleCommand sqlSelectCommand = new OracleCommand(argSqlString, dbConnection);
sqlSelectCommand.CommandTimeout = 300;却出现
“System.Data.OracleClient.OracleCommand”并不包含对“CommandTimeout”的定义
是不是在其他类中,请指教??急啊,多谢~~
...全文
338 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2009-12-10
  • 打赏
  • 举报
回复
在1.1中,直接使用Add方法,作用和AddWithValue一样的,下面列出Add方法在2.0以上版本的定义
[ObsoleteAttribute("Add(String parameterName, Object value) has been deprecated.  Use AddWithValue(String parameterName, Object value).  http://go.microsoft.com/fwlink/?linkid=14202", 
false)]
public OracleParameter Add(
string parameterName,
Object value
)

可见,这个重载形式在2.0以上版本已经过时,等同于AddWithValue,但可以用于1.1版本。
sunboyyun 2009-12-10
  • 打赏
  • 举报
回复
有没有人知道AddWithValue 怎么用啊??
yyt_yang 2009-12-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qldsrx 的回复:]
刚查了下MSDN,有这么一说:
引用与其他 .NET Framework 数据提供程序(SQL Server、OLE DB 和 ODBC)中的命令对象不同,OracleCommand 对象不支持 CommandTimeout 属性。设置命令超时是无效的,返回值始终为零。


这说明你不需要设置超时,Oracle执行任何过程都不会超时的。
[/Quote]
对的这个问题我也查过,如果连接无效,系统会自动超时,大概要20秒
sunboyyun 2009-12-09
  • 打赏
  • 举报
回复
public DataTable GetDataTable(string argSqlString, object[] argVal)
{
OracleCommand sqlSelectCommand = new OracleCommand(argSqlString, dbConnection);
// sqlSelectCommand.CommandTimeout = 300;
if (dbTrans != null)
sqlSelectCommand.Transaction = dbTrans;
sqlSelectCommand.Prepare();
for (int i = 0; i < argVal.Length; i++)
{
sqlSelectCommand.Parameters.AddWithValue("@P" + i.ToString(), argVal[i]);
}
OracleDataAdapter sqlDataAdapter = new OracleDataAdapter(sqlSelectCommand);
DataTable dataTable = new DataTable();
sqlDataAdapter.Fill(dataTable);///填充数据集;
return dataTable;
}
那么这个带参数的在VS 2003里怎么写啊??多谢啊
wuyq11 2009-12-09
  • 打赏
  • 举报
回复
看看MSDN。应该没有相关方法
AddWithValue是2.0以上加的
sunboyyun 2009-12-09
  • 打赏
  • 举报
回复
谢谢楼上的,还有个问题:
OracleCommand sqlSelectCommand = new OracleCommand(argSqlString, dbConnection);
if (dbTrans != null)
sqlSelectCommand.Transaction = dbTrans;
sqlSelectCommand.Prepare();
for (int i = 0; i < argVal.Length; i++)
{
sqlSelectCommand.Parameters.AddWithValue("@P" + i.ToString(), argVal[i]);
}
OracleDataAdapter sqlDataAdapter = new OracleDataAdapter(sqlSelectCommand);
DataSet dataSet = new DataSet();
sqlDataAdapter.Fill(dataSet);///填充数据集;
return dataSet;

也不包含对 "AddWithValue"的定义??
qldsrx 2009-12-09
  • 打赏
  • 举报
回复
刚查了下MSDN,有这么一说:
引用
与其他 .NET Framework 数据提供程序(SQL Server、OLE DB 和 ODBC)中的命令对象不同,OracleCommand 对象不支持 CommandTimeout 属性。设置命令超时是无效的,返回值始终为零。


这说明你不需要设置超时,Oracle执行任何过程都不会超时的。
sunboyyun 2009-12-09
  • 打赏
  • 举报
回复
还以为在这里面问题都能解决了?
sunboyyun 2009-12-09
  • 打赏
  • 举报
回复
都没有写过vs 2003里oracle数据库低层代码吗?
sunboyyun 2009-12-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 j45kp 的回复:]
可能没有引用 using SYSTEM.DATA.ORACLE.CLIENT
[/Quote]加了
j45kp 2009-12-09
  • 打赏
  • 举报
回复
可能没有引用 using SYSTEM.DATA.ORACLE.CLIENT
include_me 2009-12-09
  • 打赏
  • 举报
回复
貌似是不允许设置的,代码里也没有实现.
试试加到连接字符串里..
Data Source=..;Connection Timeout=60;
sunboyyun 2009-12-09
  • 打赏
  • 举报
回复
晕,必须得vs 2003开发,有知道的说下啊??
qldsrx 2009-12-09
  • 打赏
  • 举报
回复
不清楚.net 1.1框架下的类,实在不行你还是用2.0框架开发吧,或者使用Oracle公司提供的.NET类库也可以开发,装Oracle客户端会附带安装.NET类库的,那里面有可用的dll,添加引用即可。
sunboyyun 2009-12-09
  • 打赏
  • 举报
回复
Connection 里也没的,还有没有知道在哪里的,急啊~~
include_me 2009-12-09
  • 打赏
  • 举报
回复
看看 Connection 里..

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧