繁体   English   中英

使用C#从数据库获取列信息

[英]Getting column info from db with C#

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

是否可以按名称引用表中的列,而不必经历所有这些麻烦?

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

是的,但是很慢。 当然,这并不比您的方法慢,但是很慢-我会标记您的整个代码进行审核...

  • 不要求输入“ *”,请输入字段。 良好的SQL惯例-正如您所知的字段,您猜怎么着,您不必猜测它们。 最重要的是,您假设ID为0,用户名字段为1 ...

如果那不可能-请阅读说明。 有一个“ GetOrdinal”方法,它带有一个字段名,然后返回字段索引。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM