如何将所有记录从SQL SERVER数据库表中保存到数组中?
我在我的数据库中有一张桌子。我想将所有SQL SERVER数据库表记录保存到数组中。我到处搜索的是将数据从dataTable复制到数组。这可能将所有记录从数据库表中保存到数组中?如果是,请帮助我。我想用C#获取代码。如何将所有记录从SQL SERVER数据库表中保存到数组中?
被修改: 我想要处理DataTable中的所有行,但逐行通过Datatable会消耗更多时间。所以我正在寻找更好的性能与其他功能,如数组或结构可能。
您可以使用EF和加载数据是这样的:
var data = context.YourTable.ToList();
但要注意,如果你有一个大表,可能你的应用程序慢下来,然后你要做一些解决方法,如分页。通常你可能想通过一些标准,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);
}
}
我宁愿使用ADO.NET代码。如果可能,你可以帮助我使用ADO.NET代码吗? –
@DilipKumar Simsons的答案是ADO.NET – bradbury9
@ 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();
}
}
}
我不理解这部分在你的代码'commandText = $“Select * from {sqlreader [”name“]}”;'你能解释我 –
@DilipKumar,这是一个动态的字符串将为数据库中的所有表创建一个选择命令。它被称为插值字符串。 https://msdn.microsoft.com/en-us/library/dn961160.aspx – Simsons
SqlDataReader的实例化+类:
但是你的问题,得到的答案是这样的。 – john
看看https://github.com/StackExchange/Dapper。 –
您是否正在寻找像EntityFramework或NHibernate的解决方案? – Habeeb