设字段为 uniqueidentifier 显示为32位的二进制的编码;好处是当几个系统进行整和时id不会发生冲突;8-4-4-4-12组合;


public static Agent CreateAgent(Agent agent)

  {

   IConnection cnn = ConnectionManager.GetConnection();

   cnn.Open();

   ITransaction trans = cnn.BeginTransaction();

   ICommand cmd;

   int i=0;

   int effectedRows = 0;

   Guid agentId = Guid.NewGuid();

   string sql = "INSERT INTO [B2B_Agent]( "

    + " [AgentId], [Code], [Type], [Level],  "

    + " [CompanyName], [CompanyNameShort], [ProvinceCode], [CityCode], "

    + " [Address], [PostCode], [Linkman], [Email], [Tel], "

    + " [MobileTel], [Msn], [QQ], [IsProvider], [IsPurchaser], [State], [RegisterDate], [Introducer], [CommisionMode]) "

    + " VALUES(  "

    + " ?, '', ?, ?, "

    + " ?, ?, ?, ?, "

    + " ?, ?, ?, ?, ?, "

    + " ?, ?, ?, ?, ?, ?, getdate(), '', ?) ";

   cmd = cnn.CreateCommand(sql);

   cmd.Transaction = trans;

   cmd.SetGuid(i, agentId); i++;

   cmd.SetInt(i, agent.Type); i++;

   cmd.SetInt(i, agent.Level); i++;

   cmd.SetNVarChar(i, agent.CompanyName); i++;

   cmd.SetNVarChar(i, agent.CompanyNameShort); i++;

   cmd.SetInt(i, agent.ProvinceCode); i++;

   cmd.SetInt(i, agent.CityCode); i++;

   cmd.SetNVarChar(i, agent.Address); i++;

   cmd.SetVarChar(i, agent.PostCode); i++;

   cmd.SetNVarChar(i, agent.Linkman); i++;

   cmd.SetVarChar(i, agent.Email);i++;

   cmd.SetVarChar(i, agent.Tel); i++;

   cmd.SetVarChar(i, agent.MobileTel); i++;

   cmd.SetVarChar(i, agent.Msn); i++;

   cmd.SetVarChar(i, agent.QQ); i++;

   cmd.SetBit(i, agent.IsProvider); i++;

   cmd.SetBit(i, agent.IsPurchaser); i++;

   cmd.SetInt(i, agent.State); i++;

   cmd.SetInt(i, agent.CommisionMode); i++;

   //cmd.SetBit(i, agent.IsProvider); i++;

   //cmd.SetBit(i, agent.IsPurchaser); i++;

   try

   {

    effectedRows = cmd.ExecuteNonQuery();

   }

   catch(Exception e)

   {

    goto Error;

   }

           

   if (!(effectedRows >0))

   {

    goto Error;

   }

   trans.Commit();

   cnn.Close();

   return GetAgentById(agentId);

   Error:

    trans.Rollback();

   cnn.Close();

   return null;

  } "?" 的作用是防止编码混乱;或者delete table1 where a=1 or 1=1


declare @A varchar set@A='1 or 1=1'

delete table1 where a=@A