StringBuilder strAdd_IDIP_Sql = new StringBuilder();
                strAdd_IDIP_Sql.Append("insert into t_d_idip(");
                strAdd_IDIP_Sql.Append("ID,IP,UniqueID,HarkwareInfo)");
                strAdd_IDIP_Sql.Append(" values (");
                strAdd_IDIP_Sql.Append("?ID,?IP,(select last_insert_id()),?HarkwareInfo");
                strAdd_IDIP_Sql.Append(sbKeyPlusString1.ToString());                MySqlParameter[] IDIP_Parameters = {
new MySqlParameter("?ID", MySqlDbType.Int64,8),
new MySqlParameter("?IP", MySqlDbType.Int64,8),
                    new MySqlParameter("?HarkwareInfo",MySqlDbType.TinyBlob),
                                                   };
                IDIP_Parameters[0].Value = Convert.ToInt64(ID_Array[i]);
                IDIP_Parameters[1].Value = Convert.ToInt64(IP_Array[i]);
                IDIP_Parameters[2].Value = ExamineModel.HarkwareInfo;
mysql数据库
这是在一个数据库事务中执行的,前面已经插入了一条数据,在插这条数据的时候需要获取上次插入的另外一张表中自增ID作为一个字段的值。这样子调用会有问题,请高手指引下

解决方案 »

  1.   

    其实我这个思维是对的。是我不大仔细。
    我想表达的是:我一个数据库事务里面插很多张表,其中有一条数据需要获得上一条数据的自增ID,这两张表是主从关系。但是我在带参sql中,用select last_insert_id()报了一个错误。其实我这种思路本身没错,错的是我不小心写错了。  MySqlParameter[] IDIP_Parameters = {
    new MySqlParameter("?ID", MySqlDbType.Int64,8),
    new MySqlParameter("?IP", MySqlDbType.Int64,8),
      new MySqlParameter("?HarkwareInfo",MySqlDbType.TinyBlob),
      };大家发现没,数组里面最后一行多了一个逗号。