param = new OleDbParameter("as_r_djbh",OleDbType.Char);
param.Direction = ParameterDirection.Output;
param.Size = 16;
OleDbCom.Parameters.Add(param);try 
{
OleDbCom.ExecuteNonQuery();
djbh = OleDbCom.Parameters["as_r_djbh"].Value.ToString();

……使用上面的方法我在我自己的机器上运行是没有问题,能够取出相应的返回参数,可是拿到用户那后就莫名其妙的取出值为空?
访问数据库是OleDb去访问Sybase ase数据库。我有点要去客户的服务器上安装个。net去调试的冲动!各位哪位有遇到过这样的事情呀?

解决方案 »

  1.   

    试试看:
    djbh = param.Value.ToString();
      

  2.   

    换成用ODBC连的话是否会出现这样的问题?
      

  3.   

    上面问题解决了:
    解决方式为将返回参数放在第一位就可以了,原来是在最后一位!不过对这样的解决方法让我感觉很不正常,为什么这个会区分有的机器呢?大家一起讨论下吧
    还有一个怪问题:
    我要Truncate一个Table,Truncate Table ……
    具体执行如下:
    OleDbConn = new OleDbConnection(DataConnString);
    OleDbConn.Open();
    OleTran = OleDbConn.BeginTransaction();
    for(int i=0;i<sql.Length;i++)
    {
    errsql = sql[i];
    OleDbCom = new OleDbCommand(sql[i],OleDbConn,OleTran);
    OleDbCom.ExecuteNonQuery();
    }
    OleTran.Commit();这次又遇到问题了,在多数机器上没有问题,在有一台机器上本来也没有问题,可昨天突然出现问题了,提示为:[DataDirect ADO Sybase Provider]Truncate table command not allowed within multi-statement transaction 
    搞不懂为什么了!
    我大概看了看可能的错误原因有这么两个
    1.连接的事务没有设置为自动提交
    2.truncate table命令之前不能有未提交的数据操作。 可我觉得这样解释有点不通。
    各位有什么高见?
      

  4.   

    OleDb的原因
    http://minbear.cnblogs.com/archive/2006/05/12/398421.html