2012-04-25 13 views
2

解決しよう(私自身の問題):ASP.NET(WebMatrix)のデータベースのテーブルをループする方法はありますか?

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

は、これは私のために働きました。 MicrosoftのWebサイトhereのチュートリアルを、以下のよう


、私は次のコードを使用して表の行をループすることが非常に簡単発見しました。

次を出力
@{ 
    var data = Database.Open("FullDatabase").Query("SELECT * FROM Servers"); 
} 

<div id="movieslist"> 
    <ol> 
     @foreach(var row in data) 
     { 
     <li><a href="#">@row.Item</a></li> 
     } 
    </ol> 
</div> 

1. Virtual Machines 

2. Physical Machines 

3. Processors (CPU) 

4. Memory (RAM) 

5. OS Build 

しかし、 "サーバー" テーブルには、ただ一つのデータベースで多くのです。私がしたいことは次のようなものです:

@{ 
    var database = Database.Open("FullDatabase") 
} 

<div id="movieslist"> 
    <ol> 
     @foreach(var table in database) 
     { 
     var data = database.Query("SELECT * FROM " + table); 
      @foreach(var row in data) 
      { 
      <li><a href="#">@row.Item</a></li> 
      } 
     } 
    </ol> 
</div> 

このようなことは可能ですか?もしそうなら、どのように?どうもありがとう。

答えて

0

まず、あなたが本当に必要なものを取り出すだけでなく、それ以上の帯域幅や時間を消費しないように、プロダクションサイトでは決して楽しむためにやることはありません。必要。

SELECT name FROM [sysobjects] WHERE xtype = 'u'; 

または

SELECT name FROM [sys].[objects] WHERE type_desc = 'USER_TABLE'; 

または

SELECT table_name FROM [information_schema].[tables]; 

第二に、あなたは常に、システムのデータを照会することができ、ボードにすべてのテーブルを取得するために、あなただけのようなSELECT文を発行します

これらはすべて同じを実行し、どのSQLバージョンあなたが使用している...

だからあなたdatabaseクエリは次のようになります。これは、生産現場では行われないだろう、なぜ

var database = Database 
        .Open("FullDatabase") 
        .Query("SELECT name FROM [sysobjects] WHERE xtype = 'u'"); 
+0

はあなたが説明していただけますか?私はこのような情報が私には非常に貴重なので、サーバー側の開発には非常に新しいです。また、各テーブルの各行が必要になるだけで、必要なものを取り出すだけでは何を意味するのか分かりません。 – Tom

+0

各行、ただし、どの列!プロダクションと優れた開発者では、 '*'(all)キーワードを使用することは決してありません。例えば、*などの必要な列をユーザーリストに指定すると、 'Id'、' Name'、 'LastLoginTime'、それ以外の場合は、データベース(通常はデータベースをホストする他のコンピュータ)への接続が必要なテーブルから余分な情報を取得することを防ぎます。そのためには、より多くの時間をロードする必要があります。大量の行、ユーザーは決して20行以上を一度に読み取ることはなく、一度に20行を取得するのは何百もの方法よりも高速です... – balexandre

+0

ああ、今私は理解しています。 – Tom

関連する問題