我正在嘗試基於變量創建DataReader
。我需要根據TreeView
中的哪個節點被選中來填充一系列TextBoxes
,並且父節點數據與子節點數據不同。所以,我寫這個代碼:基於變量創建DataReader
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["PBRConnectionString"].ConnectionString))
{
try
{
conn.Open();
if (TreeViewAccts.SelectedNode.Parent == null)
{
// At the parent level, we filter by Account Group ID
SqlCommand cmd = new SqlCommand(@"Select [ACCT_GRP_PK], [ACCT_GRP], 'X' as [DOS], [ACTIVE_FLG], [LOAD_BY], [LOAD_TIMESTAMP], [UPDT_BY], [UPDT_TIMESTAMP], [A_FLG_UPDT_BY], [A_FLG_UPDT_TIMESTAMP] from [ACCT_GRP_LIST] where [ACCT_GRP_PK] = @AcctID ORDER BY [ACCT_GRP] ASC", conn);
cmd.Parameters.AddWithValue("@AcctID", Convert.ToInt32(TreeViewAccts.SelectedValue.ToString()));
}
else
{
// At the child level, we filter by Account ID
SqlCommand cmd = new SqlCommand(@"Select [ACCT_PK], [ACCT_NUM], [DOS], [ACTIVE_FLG], [LOAD_BY], [LOAD_TIMESTAMP], [UPDT_BY], [UPDT_TIMESTAMP], [A_FLG_UPDT_BY], [A_FLG_UPDT_TIMESTAMP] from [ACCT_LIST] where [ACCT_PK] = @AcctID ORDER BY [ACCT_NUM] ASC", conn);
cmd.Parameters.AddWithValue("@AcctID", Convert.ToInt32(TreeViewAccts.SelectedValue.ToString()));
}
//Here is the trouble
using (SqlDataReader reader = cmd.ExecuteReader())
while (reader.Read())
{
txtID.Text = reader.GetByte(0).ToString();
txtName.Text = reader.GetByte(1).ToString();
txtDOS.Text = reader.GetByte(2).ToString();
txtFlag.Text = reader.GetByte(3).ToString();
txtLoadedBy.Text = reader.GetByte(4).ToString();
txtLoadedOn.Text = reader.GetByte(5).ToString();
}
的問題是,在這條線:
using (SqlDataReader reader = cmd.ExecuteReader())
它告訴我,
'加利福尼亞' 不存在的當前上下文。
我假設它是因爲它是在那裏cmd
定義的if
/else
塊之外。
我該如何做這項工作?