標準のSQLselectステートメントをSqlDataAdapterを介してSQLボックスに送信し、DataSetオブジェクトにデータを入力しています。
結果のDataSetの行にアクセスできますが、DataSetをMVCビューに返すことができるリストに変換するにはどうすればよいですか。つまり、Listオブジェクトがこれを処理するための最良の方法であると想定しています。
これが私のコントローラーのc#コードです:
public class QAController : Controller
{
private readonly static string connString = ConfigurationManager.ConnectionStrings["RegrDBConnection"].ToString();
private readonly static SqlConnection sqlConn = new SqlConnection(connString);
private readonly static SqlCommand sqlComm = new SqlCommand();
public ActionResult Index()
{
DbRegressionExec();
return View();
}
public static void DbRegressionExec()
{
// SELECT TABLE CONTENTS FROM SQL !!
RegressDB_TableList regresDB = new RegressDB_TableList();
string sqlStr = "select * from [RegressionResults].[dbo].[Diff_MasterList] order by TableName";
// POPULATE DATASET OBJECT
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlStr, sqlConn);
da.SelectCommand.CommandType = CommandType.Text;
sqlConn.Open();
try
{
da.Fill(ds, "RegresDB");
}
catch (Exception e)
{
throw;
}
finally
{
sqlConn.Close();
}
// I can iterate thru rows here, but HOW DO CONVERT TO A LIST OBJECT ????
int numRows = ds.Tables["RegresDB"].Rows.Count;
for (int i = 0; i < numRows; i++)
{
string tblName = ds.Tables["RegresDB"].Rows[i].Field<string>("TableName");
}
//List<RegressDB_TableList> masterList = regresDB.RegresTableList.ToList(); //not working !!
//var masterList = regresDB.TableName.ToList(); //
}
}
そして、これを実現するために必要な簡単なクラス:
namespace RegressionMvc.Models
{
public class RegresDB_TableName
{
public string TableName { get; set; }
}
public class RegressDB_TableList
{
public List<RegresDB_TableName> RegresTableList { get; set; }
}
}
最後に、SQL ServerからのDataSetの結果を処理するための最良の方法と、それらをMVCビューに戻す方法を見つけようとしています。
私はおそらくjQueryとJsonを使用できます。つまり、データフィールドをJsonに変換してJQueryに戻るだけですが、SQLベースの結果セットを処理する方法はいくつかあると確信しています。
よろしくお願いします。
最高、ボブ