如何将所有记录从SQL SERVER数据库表中保存到数组中?

问题描述:

我在我的数据库中有一张桌子。我想将所有SQL SERVER数据库表记录保存到数组中。我到处搜索的是将数据从dataTable复制到数组。这可能将所有记录从数据库表中保存到数组中?如果是,请帮助我。我想用C#获取代码。如何将所有记录从SQL SERVER数据库表中保存到数组中?

被修改: 我想要处理DataTable中的所有行,但逐行通过Datatable会消耗更多时间。所以我正在寻找更好的性能与其他功能,如数组或结构可能。

+0

SqlDataReader的实例化+类:

但是你的问题,得到的答案是这样的。 – john

+1

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

+0

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

您可以使用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是刚才我看到了。在这 –

不知道你正在尝试,但似乎相当昂贵,可能不是一个好主意,我们也许可以找到另一种方法来处理你的问题,完全不搭这一个。通过传递字段的值,或使用反射

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