首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将SQL表读入C# DataTable

将SQL表读入C# DataTable
EN

Stack Overflow用户
提问于 2011-05-20 22:28:51
回答 5查看 422.3K关注 0票数 107

我读过很多关于在SQL表中插入DataTable的文章,但是有没有一种简单的方法可以把SQL表拉到.NET DataTable中呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-20 22:41:22

在这里,尝试一下(这只是一个伪代码)

代码语言:javascript
复制
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();
    }
}
票数 176
EN

Stack Overflow用户

发布于 2011-05-20 22:33:19

代码语言:javascript
复制
var table = new DataTable();    
using (var da = new SqlDataAdapter("SELECT * FROM mytable", "connection string"))
{      
    da.Fill(table);
}
票数 81
EN

Stack Overflow用户

发布于 2011-05-20 22:35:14

有很多种方法。

在数据适配器上使用ADO.Net和fill来获取DataTable:

代码语言:javascript
复制
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);
}

然后,您可以从数据集中获取数据表。

注意,在向上投票的答案数据集中没有使用(它出现在我的答案之后),它确实使用了

代码语言:javascript
复制
// 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提供程序。这样做的全部目的是在可能的情况下从数据库实现中抽象出来。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6073382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档