【问题标题】:Read a sql query with C# [duplicate]使用 C# 读取 sql 查询 [重复]
【发布时间】:2015-07-03 13:25:21
【问题描述】:

我试图读取我的 sql 查询,但它并没有真正起作用。这一切都在工作,直到涉及到查询部分,然后就行了:

rst = query.ExecuteReader();

出现错误:

连接属性尚未初始化。

有人知道怎么处理吗?

 Chart chart = new Chart();
    StringBuilder xmlStr = new StringBuilder();
    StringBuilder strCategories = new StringBuilder();
    StringBuilder strProcesses = new StringBuilder();
    StringBuilder strTasks = new StringBuilder();

    xmlStr.Append("<chart logoURL='../../Images/Piktogramme/" + chart.Image + "' caption='" + chart.Caption + "' theme='flat'" + " dateformat='dd/mm/yyyy' showTaskLabels='1'>"); // attributes will go here

    // Category for each month
    for (int i = -12; i < 6; i++)
    {
        DateTime today = DateTime.Now;
        today = today.AddMonths(i);
        strCategories.Append("<category start='1/" + today.Month + "/" + today.Year + "' end='" + DateTime.DaysInMonth(today.Year, today.Month) + "/" + today.Month + "/" + today.Year + "' name='" + today.ToString("MMM") + "' />");
    }

    // Get the connection string
    string connStr = ConfigurationManager.ConnectionStrings["CRM_SQL"].ConnectionString;
    using (SqlConnection conn = new SqlConnection(connStr))
    {
        // Establish the connection with the database
        conn.Open();

        // Construct and execute SQL query which would return the total amount of sales for each year
        SqlCommand query = new SqlCommand();
        // Begin iterating through the result set
        SqlDataReader rst;
        query.CommandText = "SELECT * from table";
        rst = query.ExecuteReader();


        while (rst.Read())
        {
            // Construct the chart data in XML format
            strProcesses.AppendFormat("<process name='{1}' id='{0}' />", rst[0], rst[1]);
            strTasks.AppendFormat("<task name='{0}' processid='{1}' start='{2}' end='{3}' />", rst[4], rst[0], rst[2], rst[3]);
        }
        DateTime today = DateTime.Now;
        xmlStr.Append("<trendlines><line start='" + DateTime.DaysInMonth(today.Year, today.Month) + "/" + today.Month + "/" + today.Year + "' displayvalue='Heute'/></trendlines>");
        // End the XML string
        xmlStr.Append("<categories>" + strCategories.ToString() + "</categories> <processes>" + strProcesses.ToString() + "</processes> <tasks width='10'>" + strTasks.ToString() + "</tasks> </chart>");

        // Close the result set Reader object and the Connection object
        rst.Close();
        conn.Close();
    }

    return xmlStr.ToString();
}

【问题讨论】:

标签: c# sql sql-server sqldatareader fusioncharts


【解决方案1】:

您的SqlCommand 对象没有指向您的SqlConnection 的链接。

换行:

SqlCommand query = new SqlCommand();

作者:

SqlCommand query = conn.CreateCommand();

PS:像SqlConnectionSqlCommandSqlDataReader也是一次性的,所以你可以/应该也使用using
conn.Close(); 这条线没有用,因为using 会处理它。

【讨论】:

    【解决方案2】:

    一种方法;

    var  query  = new SqlCommand("SELECT * from table", conn);
    

    另一种方法是分配连接字符串

    query.connection = conn;
    

    【讨论】:

      【解决方案3】:

      添加关注

      query.Connection=conn;
      

      之后

      SqlCommand query = new SqlCommand();
      

      【讨论】:

        【解决方案4】:

        试试这个:

        using (SqlConnection conn = new SqlConnection(connStr))
        {
            // Establish the connection with the database
            conn.Open();
        
            using (SqlCommand query = new SqlCommand("SELECT * from table", conn))
            {
                query.CommandType = CommandType.Text;
                using (var rst = query.ExecuteReader())
                {
                    while (rst.Read())
                    {
                        strProcesses.AppendFormat("<process name='{1}' id='{0}' />", rst[0], rst[1]);
                        strTasks.AppendFormat("<task name='{0}' processid='{1}' start='{2}' end='{3}' />", rst[4], rst[0], rst[2], rst[3]);
                    }
                }
            }
            DateTime today = DateTime.Now;
            xmlStr.Append("<trendlines><line start='" + DateTime.DaysInMonth(today.Year, today.Month) + "/" + today.Month + "/" + today.Year + "' displayvalue='Heute'/></trendlines>");
            // End the XML string
            xmlStr.Append("<categories>" + strCategories.ToString() + "</categories> <processes>" + strProcesses.ToString() + "</processes> <tasks width='10'>" + strTasks.ToString() + "</tasks> </chart>");
            conn.Close();
        }
        

        【讨论】:

          猜你喜欢
          • 2016-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-25
          • 1970-01-01
          • 1970-01-01
          • 2011-12-11
          • 2016-09-07
          相关资源
          最近更新 更多