Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从SQL命令文本到数据集的直接方法_C#_Sql_Dataset - Fatal编程技术网

C# 从SQL命令文本到数据集的直接方法

C# 从SQL命令文本到数据集的直接方法,c#,sql,dataset,C#,Sql,Dataset,如果我有一个sql命令,那么获取数据集最直接的途径是什么 string sqlCommand = "SELECT * FROM TABLE"; string connectionString = "blahblah"; DataSet = GetDataSet(sqlCommand,connectionString); GetDataSet() { //...? } 我从SqlConnection和SqlCommand开始,但我在API中看到的最接近的东西是SqlCommand.Ex

如果我有一个sql命令,那么获取数据集最直接的途径是什么

string sqlCommand = "SELECT * FROM TABLE";
string connectionString = "blahblah";

DataSet = GetDataSet(sqlCommand,connectionString);

GetDataSet()
{
   //...?
}
我从
SqlConnection
SqlCommand
开始,但我在API中看到的最接近的东西是
SqlCommand.ExecuteReader()
。使用此方法,我需要获取
SqlDataReader
,然后手动将其转换为
DataSet
。我认为有一条更直接的途径来完成这项任务

如果更简单,一个
数据表也将符合我的目标。

完成它就行了

public DataSet GetDataSet(string ConnectionString, string SQL)
{
    SqlConnection conn = new SqlConnection(ConnectionString);
    SqlDataAdapter da = new SqlDataAdapter();
    SqlCommand cmd = conn.CreateCommand();
    cmd.CommandText = SQL;
    da.SelectCommand = cmd;
    DataSet ds = new DataSet();

    ///conn.Open();
    da.Fill(ds);
    ///conn.Close();

    return ds;
}
string sqlCommand = "SELECT * FROM TABLE";
string connectionString = "blahblah";

DataSet ds = GetDataSet(sqlCommand, connectionString);

古怪的我最近遇到SQL问题,DataSet.Fill没有返回任何记录。然而,Load不会返回记录。感谢分享这个方法-希望我知道我为什么会有问题。如果你是指Adrian的代码,它使用DataAdapter来填充(即
da
而不是
ds
——这两个变量名是相似的)。是的,这就是我的意思。知道为什么使用DataAdapter填充返回null,而使用table.Load(cmd.ExecuteReader())返回一行吗?我想你可能是无意中键入了
ds.fill
,而不是
da.fill
使用
语句调用
尝试…在引擎盖下完成
,而
finalize
语句应该关闭所有连接并处理所有内存引用(请注意,Microsoft Access不会这样做!)。
DataSet GetDataSet(string sqlCommand, string connectionString)
{
    DataSet ds = new DataSet();
    using (SqlCommand cmd = new SqlCommand(
        sqlCommand, new SqlConnection(connectionString)))
    {
        cmd.Connection.Open();
        DataTable table = new DataTable();
        table.Load(cmd.ExecuteReader());
        ds.Tables.Add(table);
    }
    return ds;
}
public static string textDataSource = "Data Source=localhost;Initial Catalog=TEST_C;User ID=sa;Password=P@ssw0rd";

public static DataSet LoaderDataSet(string StrSql)      
{
    SqlConnection cnn;            
    SqlDataAdapter dad;
    DataSet dts = new DataSet();
    cnn = new SqlConnection(textDataSource);
    dad = new SqlDataAdapter(StrSql, cnn);
    try
    {
        cnn.Open();
        dad.Fill(dts);
        cnn.Close();

        return dts;
    }
    catch (Exception)
    {

        return dts;
    }
    finally
    {
        dad.Dispose();
        dts = null;
        cnn = null;
    }
}