嗨,与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(“名”,“类型”);

希望这有助于

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top