关联数组/哈希/哈希表使用Connector / NET
题
嗨,与asp.NET和C#的工作,我使用MySQL的连接器/ NET插件啄连接到MySQL数据库(没有惊喜出现!)。
和工作正常,可以连接,运行查询等等等等所有罚款和花花公子,但有可能返回一个Hashtable或类似的结果是什么?保存运行的描述在同一个表得到的列名,并使用这些值来每次创建哈希值。
谢谢,
精神科
解决方案
MySQL的C / C ++接口我假设围绕C#被包裹(与在C#重新实现)返回包含结果的两痴呆阵列。这仅仅是列和行的数据,而不是列名。 API还返回通过mysql_fetch_field_direct()
一个字段(列名)值 - 获得查询结果后的一个单独的函数调用。这也是两痴呆阵列。连接器本身不包含API用于合并两个单独的结果(列名+列/行的数据)到一个哈希表。
而不是使第二查询来获取列名的,所有你需要做的是,你通过分配值进步每一列调用mysql_fetch_field_direct()
。这给你的字段名称与包含该列/行中的数据一起。此时它是由显影剂对如何将数据安排如将其存储在哈希表,等等。
我使用一个辅助功能围绕查询执行的包装,存储与列名是关键二叉树各行并返回的树木为我做什么,我需要一个链表。
其他提示
在.net中,您只能得到数据表和数据集,数据表是做出来的数据行的,这些都是非常非常相似,哈希表,在大多数情况下,你可以使用它们来实现的任务,但如果你需要,你hashtable中可以使用这个代码
public static Hashtable convertDataRowToHashTable(DataRow dr)
{
if (dr == null)
{
return null;
}
Hashtable ret = new Hashtable(dr.Table.Columns.Count);
for (int iColNr = 0; iColNr < dr.Table.Columns.Count; iColNr++)
{
ret[dr.Table.Columns[iColNr].ColumnName] = dr[iColNr];
}
return ret;
}
其它方向(HAST表datrow)不是那么容易的,因为数据行不具有公共构造(设计),并必须调用NEWROW = myDataTable.NewRow();获得行的新实例,并且比你可以用行工作几乎与哈希表
newRow["column1"]="some value";
但如果你在哈希表需要一个新的列,你将不得不列添加到数据表,而不是数据行myTable.Columns.Add(“名”,“类型”);
希望这有助于