在PHP中,我能够从数据库中检索信息,如下所示:
<?php
$sql = "SELECT * FROM users";
$result = mysql_query($sql);
$data = array();
while($row = mysql_fetch_assoc($result))
{
$data[] = $row;
}
我想在C#中完成相同的事情:
OdbcCommand cmd = new OdbcCommand("SELECT * FROM users WHERE id = @id");
cmd.Parameters.Add("@id", id);
OdbcDataReader reader = cmd.ExecuteReader();
Dictionary<string, string> data = new Dictionary<string, string>();
while (reader.Read())
{
data.Add("id", reader.GetString(0));
data.Add("username", reader.GetString(1));
data.Add("firstName", reader.GetString(2));
}
return data;
是否可以按名称引用表中的列而不会遇到所有这些问题?
答案 0 :(得分:0)
您可以使用OdbcDataAdapter类填充DataSet
,这可能会更简单一些。
答案 1 :(得分:-1)
是的,但它很慢。不比你的方法慢,但是速度慢 - 我会将你的整个代码标记为评论......
如果不可能 - 请阅读docomentation。有一个“GetOrdinal”方法,它接受一个字段名称,然后....返回....字段索引。
也就是说,这整个代码完全是冗余的。看看正确的数据访问层,或者至少是BLTOOLKIT - 您可以将所有代码移动到一个抽象方法中,其余的自动生成。