如何根据用户名检索数据

时间:2015-02-24 11:08:35

标签: mysql asp.net

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Configuration;
using System.Data;
using MySql.Data.MySqlClient;

public partial class Username_Performance : System.Web.UI.Page
{
    StringBuilder str = new StringBuilder();
    MySqlConnection conn = new MySqlConnection("server=****;user id=****;Password=****;database=****");

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack == false)
        {
            BindChart();
        }
    }

    private DataTable GetData(int userName)
    {
        //var userName = 1;
        DataTable dt = new DataTable();

        if (Session["MyData"] != null)
        {
            dt = (DataTable)Session["MyData"];
        }
        else
        {
            string cmd = "SELECT User_Name,Status,COUNT(Status),YEAR(Start_Date_Time) As LASTYEAR FROM sh_report WHERE 'YEAR(Start_Date_Time)' >= DATE_SUB(CURDATE(),INTERVAL 1 YEAR) AND User_Name=@userName GROUP BY YEAR(Start_Date_Time) ORDER BY YEAR(Start_Date_Time) Asc LIMIT 1,2";
            using (MySqlCommand Mycmd = new MySqlCommand(cmd, conn))
            {
                using (MySqlDataAdapter ad = new MySqlDataAdapter(Mycmd))
                {
                    MySqlParameter prm = new MySqlParameter("@userName", MySqlDbType.VarChar);
                    prm.Value = userName;
                    Mycmd.Parameters.Add(prm);
                    ad.Fill(dt);
                }
            }
        }
        Session["MyData"] = dt;
        return dt;
    }


    private void BindChart()
    {
        DataTable dt = new DataTable();
        try
        {
            dt = (DataTable)Session["MyData"];

            str.Append(@"<script type=text/javascript> google.load( *visualization*, *1*, {packages:[*gauge*]});
                        google.setOnLoadCallback(drawChart);
                        function drawChart() {
            var data = new google.visualization.DataTable();
            data.addColumn('string','LASTYEAR');
            data.addColumn('number','COUNT(Status)');
            data.addColumn('string','User_Name');

            data.addRows(" + dt.Rows.Count + ");");

            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                str.Append("data.setValue(" + i + "," + 0 + "," + "'" + dt.Rows[i]["LASTYEAR"].ToString() + "');");
                str.Append("data.setValue(" + i + "," + 1 + "," + dt.Rows[i]["COUNT(Status)"].ToString() + ");");
            }
            str.Append("var options = {'title':'Last Year And Current Year Statistics','width':400,'height':400,'redFrom':90,'redTo':100,'yellowFrom':75,'yellowTo':90,'minorTicks':5};");
            str.Append("var chart = new google.visualization.Gauge(document.getElementById('chart_div'));");
            str.Append("chart.draw(data,options);}");
            str.Append("</script>");
            lt.Text = str.ToString().TrimEnd(',').Replace('*', '"');
        }
        catch
        { }
    }

    protected void ClearSession(object sender, EventArgs e)
    {
        Session.Remove("MyData");
    }
}

如果特定用户登录,我需要根据用户名检索数据。它必须仅为登录用户检索数据,而不是所有数据。

当我执行上面的代码时,它不会显示任何内容,无论是正确还是错误。

1 个答案:

答案 0 :(得分:0)

在BindChart()方法中更改此行

dt =(DataTable)Session [&#34; MyData&#34;];

dt = GetData(userName);

其中userName将记录在用户中并删除会话用于存储数据表。