我读过很多关于在SQL表中插入DataTable的文章,但是有没有一种简单的方法可以把SQL表拉到.NET DataTable中呢?
发布于 2011-05-20 22:41:22
在这里,尝试一下(这只是一个伪代码)
using System;
using System.Data;
using System.Data.SqlClient;
public class PullDataTest
{
// your data table
private DataTable dataTable = new DataTable();
public PullDataTest()
{
}
// your method to pull data from database to datatable
public void PullData()
{
string connString = @"your connection string here";
string query = "select * from table";
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(query, conn);
conn.Open();
// create data adapter
SqlDataAdapter da = new SqlDataAdapter(cmd);
// this will query your database and return the result to your datatable
da.Fill(dataTable);
conn.Close();
da.Dispose();
}
}
发布于 2011-05-20 22:33:19
var table = new DataTable();
using (var da = new SqlDataAdapter("SELECT * FROM mytable", "connection string"))
{
da.Fill(table);
}
发布于 2011-05-20 22:35:14
有很多种方法。
在数据适配器上使用ADO.Net和fill来获取DataTable:
using (SqlDataAdapter dataAdapter
= new SqlDataAdapter ("SELECT blah FROM blahblah ", sqlConn))
{
// create the DataSet
DataSet dataSet = new DataSet();
// fill the DataSet using our DataAdapter
dataAdapter.Fill (dataSet);
}
然后,您可以从数据集中获取数据表。
注意,在向上投票的答案数据集中没有使用(它出现在我的答案之后),它确实使用了
// create data adapter
SqlDataAdapter da = new SqlDataAdapter(cmd);
// this will query your database and return the result to your datatable
da.Fill(dataTable);
比我的更可取。
不过,我强烈推荐使用实体框架……使用数据表和数据集并不是一个好主意。它们没有类型安全,这意味着调试只能在运行时完成。使用强类型集合(可以通过使用LINQ2SQL或实体框架获得),您的工作将会轻松得多。
编辑:也许我没说清楚: Datatables =好,数据集=坏。如果你正在使用ado.net,那么你可以使用这两种技术(EF,linq2sql,dapper,nhibernate,orm of the month),因为它们通常位于ADO.Net之上。您获得的优势是,当您的模式发生变化时,您可以更容易地更新您的模型,前提是您通过利用代码生成获得了正确的抽象级别。
ado.net适配器使用提供程序来公开数据库的类型信息,例如,默认情况下它使用sql server提供程序,您也可以插入-例如- devart postgress提供程序,然后仍然可以访问类型信息,然后允许您如上所述地使用您选择的orm (几乎没有痛苦-有一些怪癖)-我相信微软也提供了oracle提供程序。这样做的全部目的是在可能的情况下从数据库实现中抽象出来。
https://stackoverflow.com/questions/6073382
复制相似问题