[英]trouble setting variables in C#
我在變量FaxPro
, EmailPro
, FaxStat
和EmailStat
上收到錯誤。
while (reader.Read())
{
string CustNo = reader["CUSTNO"].ToString();
string Phone = reader["PHONE"].ToString();
string Fax = reader["FAX"].ToString();
string Email = reader["PRI_EMAIL"].ToString();
string Type = reader["TYPE"].ToString();
if (Type.Contains("H"))
{
if (Type.Contains("F"))
{
string FaxStat = "Y";
string FaxPro = "PENDING";
}
else
{
string FaxStat = "N";
string FaxPro = "NONE";
}
if (Type.Contains("E"))
{
string EmailStat = "Y";
string EmailPro = "PENDING";
}
else
{
string EmailStat = "N";
string EmailPro = "NONE";
}
//outbox
// id, account, type, title, number, fax, email, faxpro, emailpro, faxstat, emailstat, filepath, datesent
MySqlCommand mycommand = new MySqlCommand("INSERT INTO outbox (id, account, type, title, number, fax, email, faxpro, emailpro, faxstat, emailstat, filepath, datesent) VALUES('0','" + CustNo + "', 'CUSTOMER', 'test', '" + Phone + "', '" + Fax + "', '" + Email + "', '" + FaxPro + "', '" + EmailPro + "', '" + FaxStat + "', '" + EmailStat + "', 'test', NOW())", conn);
mycommand.ExecuteNonQuery();
錯誤是:
名稱'FaxPro'在當前上下文C:... \\ Form2.cs中不存在
...依此類推,適用於EmailPro
, FaxStat
和EmailStat
。
在函數的開頭聲明字符串,因此它們始終具有作用域。 此刻,您在if/else
語句塊中聲明了FaxPro, EmailPro, FaxStat, EmailStat
,並且一旦該塊結束,它們就會超出范圍。
通過在函數開始時聲明一次,您將避免在while
循環中多次聲明它們。
//small example
public void myFunc()
{
string CustNo, Phone, Fax, Email, Type, FaxStat, FaxPro, EmailStat, EmailPro;
//set up query and reader
//...
while(reader.read())
{
CustNo = reader["CUSTNO"].ToString();
//etc.
}
//reader.close(); conn.close();
}
while (reader.Read())
{
string CustNo = reader["CUSTNO"].ToString();
string Phone = reader["PHONE"].ToString();
string Fax = reader["FAX"].ToString();
string Email = reader["PRI_EMAIL"].ToString();
string Type = reader["TYPE"].ToString();
// Declare your variables here
string FaxStat, FaxPro, EmailStat, EmailPro;
if (Type.Contains("H"))
{
if (Type.Contains("F"))
{
FaxStat = "Y";
FaxPro = "PENDING";
}
else
{
//...
//...
變量的聲明超出范圍。 它們在if語句中聲明。 將聲明移至如下所示的外部作用域:
while (reader.Read())
{
string CustNo = reader["CUSTNO"].ToString();
string Phone = reader["PHONE"].ToString();
string Fax = reader["FAX"].ToString();
string Email = reader["PRI_EMAIL"].ToString();
string Type = reader["TYPE"].ToString();
string FaxStat = string.Empty;
string FaxPro = string.Empty;
string EmailStat = string.Empty;
string EmailPro = string.Empty;
if (Type.Contains("H"))
{
if (Type.Contains("F"))
{
FaxStat = "Y";
FaxPro = "PENDING";
}
else
{
FaxStat = "N";
FaxPro = "NONE";
}
if (Type.Contains("E"))
{
EmailStat = "Y";
EmailPro = "PENDING";
}
else
{
EmailStat = "N";
EmailPro = "NONE";
}
//outbox
// id, account, type, title, number, fax, email, faxpro, emailpro, faxstat, emailstat, filepath, datesent
MySqlCommand mycommand = new MySqlCommand("INSERT INTO outbox (id, account, type, title, number, fax, email, faxpro, emailpro, faxstat, emailstat, filepath, datesent) VALUES('0','" + CustNo + "', 'CUSTOMER', 'test', '" + Phone + "', '" + Fax + "', '" + Email + "', '" + FaxPro + "', '" + EmailPro + "', '" + FaxStat + "', '" + EmailStat + "', 'test', NOW())", conn);
mycommand.ExecuteNonQuery();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.