2010-03-23 80 views
0

列信息在PHP中,我能够从数据库中检索信息,像这样:充分利用数据库与C#

<?php 
    $sql = "SELECT * FROM users"; 
    $result = mysql_query($sql); 
    $data = array(); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     $data[] = $row; 
    } 

我想acomplish在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

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

+0

你能提供一个如何使用它的例子吗? – UnkwnTech 2010-03-23 06:55:30

+0

效率也差很多。 -1实际上推荐了一些像DataAdapter那样愚蠢的事情,其中​​所有的世界都转向了高效的DAL。像Unkwntech询问的 – TomTom 2010-03-23 06:59:11

+0

,请你举个例子。我有点困惑。 – lYriCAlsSH 2010-03-23 07:06:16

-1

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

  • 不要问“*”,问问领域。良好的SQL练习 - 而且你知道这些字段,猜猜看,你不会猜测它们。在上面,你认为id是场0,用户名字段1 ...

如果这是不可能的 - 阅读docomentation。有一个“GetOrdinal”方法,它需要一个字段名称并返回....字段索引。

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

+0

我认为它安全地假设SELECT *可能只是示例代码。另外,我认为可以保证,并不是每个看过文档的人都能看到所有的东西。 – UnkwnTech 2010-03-23 06:55:00

+0

不,但只要看两次文档,当你寻找某些东西时是常识。那些日子太迷了。 – TomTom 2010-03-23 06:58:40