在.NET下用oledb方式访问数据库,通过oledbcommand传存储过程的名字调用,但是报错:没有发现的错误。
换成odbc方式访问,通过用obbccommand的commandtext写入{CALL SP_MYPROC}就可以调用存储过程了,如果传存储过程名称也不行。有高手对这方面比较熟悉吗,请教一下原因。

解决方案 »

  1.   

    Int32 result = 0; StringBuilder commandText = new StringBuilder("spIC_BoxIn");
    OleDbConnection Conn = new OleDbConnection(strConn); try
    {
    OleDbCommand DSCmd = new OleDbCommand(commandText.ToString(),Conn);
    Conn.Open(); DSCmd.CommandType = CommandType.Text;
    DSCmd.Parameters.Add("@n16RoadNetID", OleDbType.SmallInt).Value = (Int16)objInfo.RoadNetID;
    DSCmd.Parameters["@n16RoadNetID"].Direction = ParameterDirection.Input;DSCmd.Parameters.Add("@n16RoadID", OleDbType.SmallInt).Value = (Int16)objInfo.RoadID;
    DSCmd.Parameters["@n16RoadID"].Direction = ParameterDirection.Input;DSCmd.Parameters.Add("@n16SubRoadID", OleDbType.SmallInt).Value = (Int16)objInfo.SubRoadID;
    DSCmd.Parameters["@n16SubRoadID"].Direction = ParameterDirection.Input;DSCmd.Parameters.Add("@n16StationID", OleDbType.SmallInt).Value = (Int16)objInfo.StationID;
    DSCmd.Parameters["@n16StationID"].Direction = ParameterDirection.Input;DSCmd.Parameters.Add("@dtmOpTimeStamp", OleDbType.DBTimeStamp).Value = (DateTime)objInfo.OpTimeStamp;
    DSCmd.Parameters["@dtmOpTimeStamp"].Direction = ParameterDirection.Input;DSCmd.Parameters.Add("@n32CardNo", OleDbType.Integer).Value = (Int32)objInfo.CardNo;
    DSCmd.Parameters["@n32CardNo"].Direction = ParameterDirection.Input;DSCmd.Parameters.Add("@n64CardID", OleDbType.Integer).Value = (Int32)objInfo.CardID;
    DSCmd.Parameters["@n64CardID"].Direction = ParameterDirection.Input;DSCmd.Parameters.Add("@n32BoxNo", OleDbType.Integer).Value = (Int32)objInfo.BoxNo;
    DSCmd.Parameters["@n32BoxNo"].Direction = ParameterDirection.Input;DSCmd.Parameters.Add("@n32CardCount", OleDbType.Integer).Value = (Int32)objInfo.CardCount;
    DSCmd.Parameters["@n32CardCount"].Direction = ParameterDirection.Input;
    DSCmd.Parameters.Add("@strOprSys", OleDbType.VarChar).Value = objInfo.OprSys;
    DSCmd.Parameters["@strOprSys"].Direction = ParameterDirection.Input;
    DSCmd.Parameters.Add("@bytUpLoaded", OleDbType.TinyInt).Value = (Byte)objInfo.UpLoaded;
    DSCmd.Parameters["@bytUpLoaded"].Direction = ParameterDirection.Input;
    OleDbDataReader dataReader1 = DSCmd.ExecuteReader();
                 dataReader1.Close();
    result = 1;
    }
    catch (Exception e)
    {
    Conn.Close();
    throw e;
    }
    finally
    {
    Conn.Close();
    }
    return result;
      

  2.   

    <Connection key="AS400" value="Provider=IBMDA400;Data Source=192.162.125.232;User Id=DEMO;Password=STUDY;Default Collection=Manager;" />