2017-04-24 49 views
0

我在我的數據庫中有一張桌子。我想將所有SQL SERVER數據庫表記錄保存到數組中。我到處搜索的是將數據從dataTable複製到數組。這可能將所有記錄從數據庫表中保存到數組中?如果是,請幫助我。我想用C#獲取代碼。如何將所有記錄從SQL SERVER數據庫表中保存到數組中?

被修改: 我想要處理DataTable中的所有行,但逐行通過Datatable會消耗更多時間。所以我正在尋找更好的性能與其他功能,如數組或結構可能。

+0

SqlDataReader的實例化+類:

但是你的問題,得到的答案是這樣的。 – john

+1

看看https://github.com/StackExchange/Dapper。 –

+0

您是否正在尋找像EntityFramework或NHibernate的解決方案? – Habeeb

回答

0

您可以使用EF和加載數據是這樣的:

var data = context.YourTable.ToList();

learn about EF

但要注意,如果你有一個大表,可能你的應用程序慢下來,然後你要做一些解決方法,如分頁。通常你可能想通過一些標準,Where擴展方法

也可以運行與EF原始SQL查詢:

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

選擇如何連接到您的DATABSE是偏好問題,我更喜歡EF你可以使用ADO.NET。

使用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 Simsons的答案是ADO.NET – bradbury9

+0

@ bradbury9是剛纔我看到了。在這 –

2

不知道你正在嘗試,但似乎相當昂貴,可能不是一個好主意,我們也許可以找到另一種方法來處理你的問題,完全不搭這一個。通過傳遞字段的值,或使用反射

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 = $「Select * from {sqlreader [」name「]}」;'你能解釋我 –

+0

@DilipKumar,這是一個動態的字符串將爲數據庫中的所有表創建一個選擇命令。它被稱爲插值字符串。 https://msdn.microsoft.com/en-us/library/dn961160.aspx – Simsons

相關問題