2017-04-24 5 views
0

私のデータベースにテーブルがあります。すべてのSQL SERVERデータベーステーブルレコードを配列に保存したいと思います。私が取得しようとしているのは、dataTableから配列にデータをコピーすることです。可能なのですか?すべてのレコードをデータベーステーブルの配列に保存しますか?はいの場合は私を助けてください。私はC#でコードを取得したいと思います。すべてのレコードをSQL SERVERデータベーステーブルの配列に保存する方法はありますか?

編集: DataTableのすべての行を処理したいが、Datatableで行ごとに処理するのに時間がかかる。だから私は配列や構造のような他の機能とのより良いパフォーマンスを探しています。

あなたがEFを使用して、このようなあなたのデータを読み込むことができ
+0

SqlDataReaderの+インスタンス化クラスをフィールドの値を渡す、またはリフレクションを使用して。 – john

+1

https://github.com/StackExchange/Dapperをご覧ください。 –

+0

EntityFrameworkやNHibernateのようなソリューションをお探しですか? – Habeeb

答えて

0

var data = context.YourTable.ToList();

learn about EF

いますが、大きなテーブルを持っている場合、それはあなたのアプリケーションが遅くなる場合があり、その後、あなたがする必要があることに注意してくださいページングのようないくつかの回避策を実行します。通常、あなたはまた、あなたがEFと生のSQLクエリを実行することができますWhere拡張メソッド

にいくつかの基準を通過したいことがあります。

context.Database.SqlQuery<YourMappingClass>("SELECT * FROM YourTable")

あなたのdatabseへの接続方法を選択し、好みの問題である、IあなたがADO.NETを使用できるEFを好む。 ADO使用

:あなたは良いアイデアしようとしたが、かなり高価なようで、おそらくされていないものを

using(SqlConnection conn = new SqlConnection()) 
    { 
     conn.ConnectionString = "Server=[server_name];Database=[database_name];Trusted_Connection=true"; 

    SqlCommand command = new SqlCommand("SELECT * FROM YourTable", conn); 
    } 
using (SqlDataReader reader = command.ExecuteReader()) 
{ 
    var list = new List<YourMappingClass>(); 
    while (reader.Read()) 
    { 

     var obj = new YourMappingClass(); 
     obj.Prop1=reader[0]; 
     obj.Prop2=reader[1]; 
     list.Add(data); 
    } 
} 
+0

私はADO.NETコードを使用することをお勧めします。可能であれば、ADO.NETコードを手伝ってもらえますか? –

+0

@DilipKumarシムソンズの答えはADO.NETです – bradbury9

+0

@ bradbury9はい今すぐ見ました。それを見てください –

2

わからないが、我々は、おそらくあなたの問題に対処し、完全にこの1つを取るために別のアプローチを見つけることができます。しかし、あなたの質問のための

は、答えはこのような何かを行く:

public static void Main(string args[]) 
    { 

     List<object> objectList = new List<object>(); 
     var commandText = "Select name from sys.tables"; 

     SqlConnection sqlConn = null;//Initialize 
     SqlCommand command = new SqlCommand(commandText, sqlConn); 

     var sqlReader = command.ExecuteReader(); 

     while (sqlReader.Read()) 
     { 
      commandText = $"Select * from {sqlReader["name"]}"; 
      command = new SqlCommand(commandText, sqlConn); 

      var subReader = command.ExecuteReader(); 

      while (subReader.Read()) 
      { 
       //Loop through and add to list 
       objectList.Add(); 
      } 
     } 

    } 
+0

私はこの部分をあなたのコード 'commandText = $"から選択しています* {sqlreader ["name"]} ";'あなたは私を説明できます –

+0

@DilipKumar、データベース内のすべてのテーブルに対してselectコマンドを作成します。補間された文字列と呼ばれます。 https://msdn.microsoft.com/en-us/library/dn961160.aspx – Simsons

関連する問題