使用C#从db获取列信息

时间:2010-03-23 06:46:40

标签: c# mysql

在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;

是否可以按名称引用表中的列而不会遇到所有这些问题?

2 个答案:

答案 0 :(得分:0)

您可以使用OdbcDataAdapter类填充DataSet,这可能会更简单一些。

答案 1 :(得分:-1)

是的,但它很慢。不比你的方法慢,但是速度慢 - 我会将你的整个代码标记为评论......

  • 不要求“*”,要求领域。良好的SQL实践 - 正如你所知道的那样,猜猜是什么,你不应该猜测它们。最重要的是,您假设id为fiel 0,username field 1 ...

如果不可能 - 请阅读docomentation。有一个“GetOrdinal”方法,它接受一个字段名称,然后....返回....字段索引。

也就是说,这整个代码完全是冗余的。看看正确的数据访问层,或者至少是BLTOOLKIT - 您可以将所有代码移动到一个抽象方法中,其余的自动生成。