【问题标题】:Easy way to convert data table to hash table or sqldatareader to hashtable将数据表转换为哈希表或将 sqldatareader 转换为哈希表的简单方法
【发布时间】:2011-02-08 21:06:51
【问题描述】:

有没有一种简单的方法可以将DataTable 转换为HashTable 或将SQLDataReader 转换为HashTable?我必须通过 javascriptserializer 解析它。我使用的代码有一些问题:

try
{
    using (SqlConnection conn = new SqlConnection(ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            dt.Load(dr);
        }
    }

    Hashtable sendData = new Hashtable();

    foreach (DataRow drIn in dt.Rows)
    {

        sendData.Add(drIn["orderNumber"].ToString(), drIn["customerName"].ToString());

    }

    sendData.Add("orderNum", order);
    JavaScriptSerializer jss = new JavaScriptSerializer();
    string output = jss.Serialize(sendData);
    return output;
}
catch (Exception ex)
{
    return ex.Message + "-" + ex.StackTrace;
}

从数据库中的一个表查询时,它给出了正确的结果,但从另一个表查询时它有问题。

还有其他方法可以做到这一点吗?

【问题讨论】:

  • 请描述问题,并附上准确的错误信息。

标签: c# sql sql-server-2008 jquery


【解决方案1】:
public static Hashtable Fn_ConvertDataTableToHashTable(DataTable dtTable, int iRow)
{
        Hashtable hshTable = new Hashtable();

        if (CommonUtil.Fn_CheckDatatableHasValue(dtTable))
        {
            foreach (DataColumn column in dtTable.Columns)
            {

                hshTable.Add(column.ColumnName, dtTable.Rows[iRow][column.ColumnName].ToString());
            }
        }

        return hshTable;
}

【讨论】:

    【解决方案2】:

    可以使用以下函数将DataTable转换为HashTable,

    public static Hashtable convertDataTableToHashTable(DataTable dtIn,string keyField,string valueField)   
    {    
       Hashtable htOut = new Hashtable();    
       foreach(DataRow drIn in dtIn.Rows)    
       {    
          htOut.Add(drIn[keyField].ToString(),drIn[valueField].ToString());    
       }   
       return htOut;    
    }
    

    然后在你的代码中使用,

    Hashtable sendData = new Hashtable();
    //You need to pass datatable, key field and value field
    sendData = convertDataTableToHashTable(dt, "orderNumber", "customerName");
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 2019-10-27
    • 2019-05-23
    • 2023-03-26
    • 2015-09-13
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多