如何字节[]到时间戳

时间:2017-12-22 09:12:00

标签: c# sql arrays timestamp enterprise-library

我的数据库中有一个timestamp列,用作rowversion。在将数据从数据库中拉出时,我们得到了rowversion,我将其转换为byte []。到目前为止,一切都按预期进行。

在更新数据时,我想(在存储过程中)检查rowversion是否相同,即将从代码传递的数据与存储在数据库中的数据进行比较。如果不同,我将中止更新,否则会更新数据。

现在我的问题是,如何将byte []传递给存储过程。存储过程中的参数类型是时间戳。

注意:我使用企业库在c#中进行所有数据库操作。我无法更改存储过程或数据类型。受限制。

2 个答案:

答案 0 :(得分:0)

下面的代码按预期工作

public static TestMethod(....,byte[] rowVersion)
{
    .........
    dbConnection_.AddInParameter(dbcommand, "@row_version", DbType.Binary,rowVersion);
    ...........
}

以上代码使用的是企业库。我认为这会对某人有所帮助。

谢谢所有试图在这里提供帮助的人。干杯..!

答案 1 :(得分:-1)

见下面的代码:

contract FinishedGoodManager{

struct FinishedGood{
string ProductionManagerId;
string ProductId;
string SerialNum;
string RMArray;
} 


FinishedGood[] finishedGoods;

    enum ErrorCodes {
    NULL,
    SUCCESS,
    ERROR,
    NOT_FOUND,
    EXISTS,
    RECURSIVE,
    INSUFFICIENT_BALANCE
}



  mapping (string => uint) serialNumberToIdMap;



function stringToBytes32(string memory source) returns (bytes32 result) {
      assembly {
          result := mload(add(source, 32))
      }
  }

   function b32(string memory source) constant returns (bytes32) {
    return stringToBytes32(source);
  }

  function FinishedGoodManager() {
    finishedGoods.length = 1; 
  }

  function getFinishedGood(string serialNum) constant returns (string,string,string,string) {
    uint finishedGoodRowId = serialNumberToIdMap[serialNum];
    return (finishedGoods[finishedGoodRowId].ProductionManagerId,finishedGoods[finishedGoodRowId].ProductId,finishedGoods[finishedGoodRowId].SerialNum,finishedGoods[finishedGoodRowId].RMArray);
  }


   function exists(string serialNum) constant returns (bool) {
    return serialNumberToIdMap[serialNum] != 0;
  }


  function createFinishedGood(string productionManagerId,string productId,string serialNum,string rmArr) constant returns(string,uint){

     // name must be < 32 bytes
    if (bytes(serialNum).length > 32) return ("ERROR",0);
    // fail if username exists
    if (exists(serialNum)) return ("EXISTS",1);


    // add finishedGood
    uint index = finishedGoods.length+1;

    serialNumberToIdMap[serialNum] = index;

    finishedGoods.push(FinishedGood(
     productionManagerId,
     productId,
     serialNum,
     rmArr
    ));   

    return (finishedGoods[0].SerialNum,finishedGoods.length);
  }


}