public void FillRabWeight(Rabbit r, int crab) { _cmd.CommandText = "ALTER TABLE `weights` DISABLE KEYS;"; _cmd.ExecuteNonQuery(); for (int i = 0; i < r.weights.Count; i++) { ushort weight = (ushort)(r.weights[i] & 0xFFFF); ushort dt = (ushort)((r.weights[i] >> 16) & 0xFFFF); DateTime sdt = (new DateTime(1899, 12, 30)).AddDays(dt); _cmd.CommandText = String.Format("INSERT INTO weights(w_rabid, w_date, w_weight) VALUES({0:d}, {1:s}, {2:d});", crab, Convdt(sdt), weight); _cmd.ExecuteNonQuery(); } _cmd.CommandText = "ALTER TABLE `weights` ENABLE KEYS;"; _cmd.ExecuteNonQuery(); }
public void FillRabFuckers(Rabbit r, int crab, bool sukrol) { _cmd.CommandText = "ALTER TABLE `f***s` DISABLE KEYS;"; _cmd.ExecuteNonQuery(); foreach (F****r f in r.female.fuckers) { if (f.f***s.value() > 0 || f.my_fuck_is_last.value() == 1) { int link = 0; int dead = 0; if (f.live.value() == 1) { link = GetNameId((ushort)f.name_key.value(), 1, true); //link = rabbyname(link); dead = 1; } else { link = FindDead(f.name.value(), (int)f.breed.value(), f.genesis); } String state = "okrol"; if (f.my_fuck_is_last.value() == 1 && sukrol) { state = "sukrol"; } String type = "vyazka"; if ((r.female.borns.value() == 0) || (r.female.borns.value() == 1 && state != "sukrol")) { type = "sluchka"; } _cmd.CommandText = String.Format(@"INSERT INTO f***s(f_rabid, f_partner, f_times, f_children, f_dead, f_state, f_last, f_type) VALUES({0:d}, {1:d}, {2:d}, {3:d}, {4:d}, '{5:s}', {6:d}, '{7:d}');", crab, link, (int)f.f***s.value() + (sukrol ? 1 : 0), f.children.value(), dead, state, f.my_fuck_is_last.value(), type); _cmd.ExecuteNonQuery(); } } _cmd.CommandText = "ALTER TABLE `f***s` ENABLE KEYS;"; _cmd.ExecuteNonQuery(); }
/// <summary> /// Вносит живого кролика в БД. /// </summary> /// <param name="r">Кролик-объект</param> /// <param name="parent">Родитель, с которым сидит</param> /// <param name="dead">Мертвый, да?</param> public void FillRabbit(Rabbit r, int parent, bool dead) { //Application.DoEvents(); String query = String.Format(@"INSERT INTO {0} (r_sex, r_parent, r_bon, r_name, r_surname, r_secname, r_notes, r_okrol, r_farm, r_tier_id, r_tier, r_area, r_rate, r_group, r_breed, r_flags, r_zone, r_born, r_status, r_last_fuck_okrol, r_genesis", (dead ? "dead" : "rabbits")); String sex = "void"; if (r.sex.value() == 1) { sex = "male"; } if (r.sex.value() == 2) { sex = "female"; } String bon = String.Format("{0:D1}{1:D1}{2:D1}{3:D1}{4:D1}", r.bon.manual.value(), r.bon.weight.value(), r.bon.body.value(), r.bon.hair.value(), r.bon.color.value()); String vals = String.Format("VALUES('{0:s}', {1}, '{2:s}'", sex, this.protectFKForSet(parent), bon);//,{3:d},{4:d} ,r.number.value(),r.unique.value()); int name = GetNameId((ushort)r.namekey.value(), (ushort)r.sex.value(), true); int surname = GetNameId((ushort)r.surkey.value(), 2, false); int secname = GetNameId((ushort)r.pathkey.value(), 1, false); vals += String.Format(", {0}, {1}, {2}, '{3:s}', {4:d}", this.protectFKForSet(name), this.protectFKForSet(surname), this.protectFKForSet(secname), r.notes.value(), r.okrol_num.value()); String flags = String.Format("{0:D1}{1:D1}{2:D1}", r.butcher.value(), r.risk.value(), r.multi.value()); if (r.sex.value() == 2) { flags += String.Format("{0:D1}{1:D1}", r.female.no_kuk.value(), r.female.no_lact.value()); } else { flags += "00"; } int tier = GetTier((int)r.where.value(), (int)r.tier_id.value()); if (parent == 0) { int tier_id = r.tier_id.value() == 1 ? 2 : 1; //здесь перепутаны местами нежели в строениях vals += String.Format(", {0:d}, {1:d}, {2}, {3:d}", r.where.value(), tier_id, this.protectFKForSet(tier), r.area.value()); } else { vals += ", NULL, 0, NULL, 0"; } vals += String.Format(", {0:d}, {1:d}, {2:d}, '{3:s}', {4:d}", 0, r.group.value(), this.FindBreed((int)r.breed.value()), flags, r.zone.value()); int status = 0; String lfo = "NULL"; if (r.sex.value() == 1) { status = (int)r.status.value(); lfo = Convdt(r.lastfuck.value()); } if (r.sex.value() == 2) { status = (int)r.female.borns.value(); lfo = Convdt(r.female.last_okrol.value()); } bool sukrol = false; vals += String.Format(", {0:s}, {1:d}, {2:s}, {3:d}", Convdt(r.borndate.value()), status, lfo, MakeGenesis(r.genesis)); if (r.sex.value() == 2) { query += ", r_event, r_event_date, r_lost_babies, r_overall_babies";//,r_worker";,r_children String ev = "none"; switch (r.female.ev_type.value()) { case 1: ev = "sluchka"; break; case 2: ev = "vyazka"; break; case 3: ev = "kuk"; break; } String edt = Convdt(r.female.ev_date.value()); sukrol = (edt != "NULL"); vals += String.Format(", '{0:s}',{1:s},{2:d},{3:d}", ev, edt, r.female.lost_babies.value(), r.female.overall_babies.value());//, ,{5:d},{0:d} //makeWorker(r.female.worker.value())); //r.female.child_count.value(), } _cmd.CommandText = query + ") " + vals + ");"; _cmd.ExecuteNonQuery(); int crab = (int)_cmd.LastInsertedId; r.notes.tag = crab; //_curRabbit = crab + 1; if (dead) { return; } if (parent == 0) { SetTierUser(tier, (int)r.area.value(), crab); } if (name != 0) { SetNameUser(name, crab); } this.FillRabWeight(r, crab); if (r.sex.value() == 2) { this.FillRabFuckers(r, crab, sukrol); foreach (Rabbit xr in r.female.suckers.rabbits) { this.FillRabbit(xr, crab, false); } } }