使用Connector / NET的关联数组/哈希/哈希表

时间:2009-09-18 09:54:39

标签: c# mysql hashtable

Hey Guys,使用asp.NET和c#,我正在使用MySQL的连接器/ NET插件来连接到MySQL数据库(没有惊喜!)。

并且工作正常,可以连接,运行查询等所有罚款和花花公子,但是可以返回Hashtable或类似的结果吗?保存在同一个表上运行描述以获取列名称,并使用这些值每次创建哈希值。

谢谢,

精神科

2 个答案:

答案 0 :(得分:2)

我假设将C#C ++连接器包装在C#中(而不是在C#中重新实现)会返回一个包含结果的双重数组。这只是列和行数据,而不是列名。 API还通过mysql_fetch_field_direct()返回字段(列名)值 - 获取查询结果后单独的函数调用。这也是一个双重阵容。连接器本身不包含用于将两个单独的结果(列名+列/行数据)合并到哈希表中的API。

除了进行第二次查询以获取列名,您需要做的就是在逐步分配值时为每列调用mysql_fetch_field_direct()。这将为您提供字段名称以及该列/行中包含的数据。此时,开发人员应该如何安排数据,例如将其存储在哈希表等中。

我使用辅助函数作为查询执行的包装器,它将每一行存储在二进制树中,列名为键,并返回一个链接的树列表,供我处理我需要的内容。

答案 1 :(得分:1)

<。>在.net中你只获得数据表和数据集,数据表是由数据行构成的,它们与哈希表非常相似,在大多数情况下你可以使用它们来完成任务,但是如果你需要哈希表,你可以使用它代码

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 table to datrow)并不那么容易,因为datarow没有公共构造函数(按设计),你必须调用newRow = myDataTable.NewRow();获取行的新实例,而且几乎可以像使用哈希表一样处理行

newRow["column1"]="some value";

但是如果你需要在哈希表中添加一个新列,则必须将列添加到datatable而不是数据行myTable.Columns.Add(“name”,“type”);

希望这会有所帮助

相关问题