В приведенном ниже фрагменте используются несколько запросов внутри одной строки подключения. сначала я выбираю некоторые данные из БД, затем перед закрытием устройства чтения данных (dr) я хотел бы сделать некоторые проверки, поэтому, если они будут выполнены, я вставлю эти значения в таблицу в БД в цикле while из dr. Там я получаю сообщение об ошибке, так как уже есть открытый накопитель данных, поэтому я не могу использовать другой запрос перед его закрытием. поэтому я временно использовал другую строку подключения, указывающую на ту же базу данных, и я выполняю вставку qry, используя этот объект подключения (conn1). но wat - это другой способ сделать это без использования другой строки подключения.
Любая помощь будет принята с благодарностью. Thx.
public XmlDocument LBS_Offer_Scheduler(string dev_token, float lat, float llong)
{
XmlDocument xml_doc = null;
bool result = false;
int row_affect = 0;
int x = (int)Math.Truncate(lat);
int y = (int)Math.Truncate(llong);
string qry = "select Store_id,Store_Latitude,Store_Longitude from tbl_FB_Store_Details where Store_Latitude like '"
+ x + "%' and Store_Longitude like '" + y + "%'";
conn.Open();
cmd = new SqlCommand(qry, conn);
dr = cmd.ExecuteReader();
while (dr.Read())
{
Store_Id = dr[0].ToString();
str_dlat = dr[1].ToString();
str_dlon = dr[2].ToString();
double dlat = Convert.ToDouble(str_dlat);
double dlon = Convert.ToDouble(str_dlon);
dist_in_sqmts = obj_distance.distance(lat, llong, dlat, dlon);
id = Convert.ToInt32(Store_Id);
if (dist_in_sqmts < 200.00)
{
string insert_qry = "insert into tbl_FB_Offer_PushNote values('" + dev_token + "', "+ id + ",'" + DateTime.Now + "','N')";
conn1.Open();
cmd = new SqlCommand(insert_qry, conn1);
row_affect = cmd.ExecuteNonQuery();
conn1.Close();
}
}
conn.Close();
if (row_affect > 0)
result = true;
xml_doc = x_doc.result(result);
return xml_doc;
}