2010-04-16 119 views
6

有沒有簡單的方法來轉換DataTableHashTableSQLDataReaderHashTable?我必須通過javascriptserializer解析它。我使用的代碼有一些問題:簡單的方法來轉換數據表哈希表或sqldatareader哈希表

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; 
} 

從數據庫的一個表中查詢,但是從另一個表它有一個問題,當它是給一個正確的結果。

有沒有其他方法可以做到這一點?

+3

請描繪這一問題,有確切的錯誤信息。 – RedFilter 2010-04-16 14:55:40

回答

-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; 
} 
0

您可以使用下面的函數來的DataTable轉換爲哈希表,

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");