2012-02-27 96 views
0

我一直在使用这种编码,就像一周前一样。但是我被卡在检索部分。所以,我有这8个文本框用于支出,每个支出8个以上的价格。在该页面上,有一个下拉菜单,用户将选择月份,然后选择当月的费用,例如1月份,文本框将显示该月份的数据库记录。如何链接月份,以便它可以根据用户的记录从数据库中检索数据?以及如何仅显示当前登录用户的记录?谢谢你帮我。从sql检索数据

protected void Button1_Click(object sender, EventArgs e) 
{ 
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString); 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand("SELECT * FROM ExpTab WHERE UserID = @UserName and month = @month", conn); 
    cmd.Parameters.Add(new SqlParameter("UserName", HttpContext.Current.User.Identity.Name)); 
    cmd.Parameters.Add(new SqlParameter("@month", DropDownList2.SelectedValue)); 
    DataTable dt = new DataTable(); 

只想问你,如何在文本框中显示检索到的数据? Thankk你

+0

你的数据库是否有任何日期列? – 2012-02-27 05:36:20

+1

我认为它更好,如果你的数据库架构以及 – Jayanga 2012-02-27 05:37:47

+0

你有没有试过调试它?它返回什么?用户SQL分析器 – 2012-02-27 05:41:03

回答

1

假设用户选择从下拉列表中,而不是日历控件月,你会做这样的事情:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    using(SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings ["Connection"].ConnectionString)) 
    { 
     conn.Open(); //you were missing this 
     SqlCommand cmd = new SqlCommand("SELECT * FROM ExpTab WHERE UserID = @UserName and month(date_column)[email protected]", conn); 
     cmd.Parameters.Add(new SqlParameter("UserName", 
     HttpContext.Current.User.Identity.Name)); 
     cmd.Parameters.Add(new SqlParameter("@month", dropDownDate.SelectedValue)); 
     DataTable dt = new DataTable(); 
     dt.Load(cmd.ExecuteReader());//load the data in a data table, for example. 
    } 
} 

上面代码中作以下假设:

  1. 你在包含日期时间的ExpTab表中有一列;因此这样的:... and month(date_col)将匹配你感兴趣的月份的数字
  2. 您月份选择来自一个叫做dropDownDate下拉式选单,每个月分配从1到12
  3. 一个整数值,我的代码不会考虑。年。我会让你弄清楚那一部分。

链接到MONTH function文档。

+0

嗨,我快到了。只是想问你,如何在文本框中加载数据?谢谢 – 2012-02-27 06:32:30

+0

只需遍历DataTable变量(dt)的行即可。使用以下foreach循环:* foreach(dt.Rows中的DataRow行)... *然后将数据行的特定列中的值分配给txtfield。 – Icarus 2012-02-27 12:30:39