名字'在当前上下文中不存在
本文关键字:上下文 不存在 名字 | 更新日期: 2023-09-27 17:49:48
我已经尝试了几个小时来处理这个问题。这是我的代码。
为了节省一些空间,我需要缩短代码。似乎在我的插入中,我看不到select语句中包含的flat变量。我如何使用这个变量,以便我可以插入它。
谢谢。
SOME CODE HERE...............
string tlocquery = "SELECT LAC,CID,LONG,LAT,STREET,MUNICIPAL FROM TRIANGULATION WHERE lat LIKE " + "'%" + tlatcut.ToString() + "%' AND long LIKE '%" + tlongcut.ToString() + "%'";
SqlCommand commandtloc = new SqlCommand(tlocquery, cnn);
SqlDataReader sdrtloc = commandtloc.ExecuteReader();
while (sdrtloc.Read())
{
string Tlong = sdrtloc["LONG"].ToString();
txtbxTlong.Text = Tlong.ToString();
string Tlat = sdrtloc["LAT"].ToString();
txtbxTlat.Text = Tlat.ToString();
string Lac = sdrtloc["LAC"].ToString();
txtbxLac.Text = Lac.ToString();
string Cid = sdrtloc["CID"].ToString();
txtbxCid.Text = Cid.ToString();
string Street = sdrtloc["STREET"].ToString();
string Municipal = sdrtloc["MUNICIPAL"].ToString();
txtbxTloc.Text = Street.ToString() + "," + Municipal.ToString();
}
SOME CODE HERE...............
string insertquery = "INSERT INTO TBLCURRENT (TLONG,TLAT) VALUES ('" + Tlong + "','" + Tlat + "')";
SqlCommand insertcomm = new SqlCommand(insertquery, cnn);
SqlDataReader insertreader = insertcomm.ExecuteReader();
在while
循环中声明的每个变量在循环的本地。换句话说,在循环结束后,它将不再存在。
你需要在循环外声明和初始化你的字符串:
string Tlat = String.Empty;
while(...)
{
//Do stuff with Tlat
}
然后继续循环填充变量
问题是你的Tlat
变量是在while
循环中声明的。
你有两种可能:
- 限制在循环中使用flat变量
- 将Tlat声明放在
while
循环之前。
在循环中声明字符串变量Tlat
。所以它不存在于外部,你不能在循环之后访问它:
string insertquery = "INSERT INTO TBLCURRENT (TLONG,TLAT) VALUES ('" + Tlong + "','" + Tlat + "')";
所以在循环前声明:
string Tlat = null;
while (sdrtloc.Read())
{
// ...
Tlat = Tlat.ToString();
}
现在您可以在之后访问它。
但是如果你期望只有一条记录,为什么要使用循环呢?你可以这样写:
if (sdrtloc.HasRows)
{
sdrtloc.Read();
string Tlat = sdrtloc["LAT"].ToString();
// ....
string insertquery = "INSERT INTO TBLCURRENT (TLONG,TLAT) VALUES ('" + Tlong + "','" + Tlat + "')";
}
除此之外,永远不要使用字符串连接来构建sql查询。使用sql参数可以防止sql注入和其他问题。 您的问题是作用域之一:因为您在while循环中声明了flat,因此它将不存在于while循环之外。因此,您需要在进入while循环之前声明flat,然后在循环中修改它,之后您就可以访问它了—只需注意,它将只携带上次Read操作的数据。