1

我有以下代码:

public static DataTable GetDataTable(string sConnStr, string sTable)
{
    DataTable dt = new DataTable();

    SqlConnection sqlConn10 = new SqlConnection(sConnStr);
    sqlConn10.Open();
    SqlCommand sqlComm10 = new SqlCommand("SELECT * FROM " + sTable, sqlConn10);
    SqlDataReader myReader10 = sqlComm10.ExecuteReader();

    try
    {
        while (myReader10.Read())
        {
            // Code needed
        }
    }
    catch
    {
        myReader10.Close();
        sqlConn10.Close();
    }

    return dt;
}

问题是,我不知道怎么继续。我想要的只是从 SQL 语句中获取包含数据的 DataTable。谢谢你的帮助!

4

4 回答 4

3

您可以使用数据适配器:

public static DataTable GetDataTable(string sConnStr, string sTable)
{
    using (SqlConnection sqlConn10 = new SqlConnection(sConnStr))
    using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM EmployeeIDs", sqlConn10))
    {
        sqlConn10.Open();
        DataTable dt = new DataTable();
        adapter.Fill(dt);
        return dt;
    }
}
于 2012-05-11T08:06:16.940 回答
0

不要使用 a SqlDataReader,使用 a SqlDataAdapter。ADataReader用于快速、仅向前的操作,而DataAdapter用于基于集合的操作。

请参阅 MSDN:http: //msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.aspx

有关简单示例,请参见http://www.dotnetperls.com/sqldataadapter

于 2012-05-11T08:03:22.453 回答
0
DataAdapter.Fill(DataTable, mySqlQuery);

http://msdn.microsoft.com/en-us/library/497b1k4t.aspx

于 2012-05-11T08:04:17.190 回答
0

只需这样做:

SqlDataReader myReader10 = sqlComm10.ExecuteReader();
dt.Load(myReader10);

return dt;

所以你会是这样的:


try
    {
        while (myReader10.Read())
         {
            dt.Load(myReader10);
         }
    }
    catch
    {
        myReader10.Close();
        sqlConn10.Close();
    }
return dt;

最简单的方法是使用 DataAdapter 填充数据表。


public static DataTable GetDataTable(string sConnStr, string sTable)
{
    using (SqlConnection sqlConn10 = new SqlConnection(sConnStr))
    using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM " + sTable, sqlConn10))
    {
        sqlConn10.Open();
        DataTable dt = new DataTable();
        adapter.Fill(dt);
        return dt;
    }
}

// 你应该使用最佳实践,在工作完成后使用 using 语句来处理连接和其他对象。



public static DataTable GetDataTable(string sConnStr, string sTable)
{    
   DataTable dt = new DataTable();
   try
   {
       using (SqlConnection sqlConn10 = new SqlConnection(sConnStr))
       using (SqlCommand sqlComm10 = new SqlCommand("SELECT * FROM " + sTable, sqlConn10))
       {
           sqlConn10.Open();
           using (SqlDataReader myReader10 = sqlComm10.ExecuteReader())
           {                     
               dt.Load(myReader10);
           }
       }
   }
   catch(Exception ex)
   {
   }
   return dt;
}

参考:在我处理 SqlDataReader 数据时将其放入 DataTable

于 2012-05-11T08:08:21.997 回答