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