以下是此方法的代码。我想处理我正在使用的数据库中的Active列,但是我得到“Active”不属于表的错误。它显然在表中,我在RestartData.cs中定义了它的属性。在数据库中,我将它设置为一点而不是布尔值。我想知道这可能是问题所在。 1表示True,0表示False。我通过谷歌研究了这个问题,但实际上并没有找到任何重点。任何帮助将不胜感激。
static List<RestartData> AppRestartList()
{
List<RestartData> restartDatas = new List<RestartData>();
RestartData restartData = null;
string sqlQuery = "Select RestartTime, ProgramLocation, LastRestartTime, RestartInterval, ProgramServer, RestartIfRunning, ProcessName from dbo.anyDatabase where active=1;";
//execute sql query
//execute database reader
SqlCommand command = new SqlCommand(sqlQuery, (SqlConnection)DB.MakeConnection("any_database"));
DataTable dt;
command.Connection.Open();
dt = DB.ExecuteTable(command, "any_database");
foreach (DataRow row in dt.Rows)
{
//move stuff from reader into log data, and exp
//not RestartData restartData = new RestartData(); The RestartData() method is already declared
restartData = new RestartData();
restartData.ProgramLocation = Misc.NullSafeString(row["programLocation"]);
restartData.Active = Misc.NullSafeBool(row["active"]);
restartData.RestarInterval = Misc.NullSafeInt(row["restartInterval"]);
restartData.RestartIfRunning = Misc.NullSafeBool(row["restartIfRunning"]);
restartData.ProcessName = Misc.NullSafeString(row["processName"]);
restartData.LastRestartTime = Misc.NullSafeDateTime(row["lastRestartTime"]);
//add restartData to list
restartDatas.Add(restartData);
}
return restartDatas;
}
答案 0 :(得分:2)
我认为你的实际选择
Select RestartTime,
ProgramLocation,
LastRestartTime,
RestartInterval,
ProgramServer,
RestartIfRunning,
ProcessName
from dbo.anyDatabase
where active=1
很好。
请注意,active
不在选择列表中,但您在
restartData.Active = Misc.NullSafeBool(row["active"]);
更改SELECT
以包含active
列,或删除您引用它的行。
答案 1 :(得分:1)
这是因为您没有从查询中选择active
列。
string sqlQuery = "Select RestartTime, ProgramLocation, LastRestartTime, RestartInterval, ProgramServer, RestartIfRunning, ProcessName from dbo.anyDatabase where active=1;";
上面的查询变成了一个数据表,其中包含您使用select
语句选择的列。
现在您正在使用此数据表并尝试访问active
中甚至不存在的datatable
列。
所以这个陈述会导致错误
restartData.Active = Misc.NullSafeBool(row["active"]);
因此,您需要使用选择查询选择active
列。
string sqlQuery = "Select Active, RestartTime, ProgramLocation, LastRestartTime, RestartInterval, ProgramServer, RestartIfRunning, ProcessName from dbo.anyDatabase where active=1;";
但除此之外,我会说你为什么要访问active
col的值
此
restartData.Active = Misc.NullSafeBool(row["active"]);
即使您知道此值始终为1
最好像这样使用它
restartData.Active = true;