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

を使用しないでください。SqlDataReaderを使用してください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 に答える