我正在使用asp.NET和c#进行开发,使用MySQL的connector/NET插件连接到MySQL数据库(这一点并不令人惊讶)。
这很好用,可以连接、运行查询等等,但是有没有可能返回一个哈希表或类似的结果呢?每次都运行相同表的describe获取列名,并使用这些值创建哈希表是否可行呢?
mysql_fetch_field_direct()
返回字段(列名)值 - 在获取查询结果后的单独函数调用。这也是一个二维数组。连接器本身没有包含将两个单独结果(列名+列/行数据)合并为哈希表的API。mysql_fetch_field_direct()
即可。这会提供包含该列/行中包含的数据的字段名称。此时,开发人员可以自行决定如何排列这些数据,例如将其存储在哈希表中等。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;
}
另一个方向(从哈希表到数据行)并不那么容易,因为数据行没有公共构造函数(按设计),您必须调用 newRow = myDataTable.NewRow(); 来获取新的行实例,然后您几乎可以像使用哈希表一样使用行。
newRow["column1"]="some value";
但是如果你需要在哈希表中新增一列,你必须将列添加到数据表而不是数据行。myTable.Columns.Add("name", "type");
希望这可以帮助你。