其实在网上已可以找到很多这方面的内容,今天碰到了,所以来记录一下
背景
在做一个看板的设计
大致内容是:
用户任意写一个SQL语句,通过语句返回数据库内容,并显示在页面上
问题是:
由于语句的写入是不同的,搜索内容也是不同的,之前用的是List<>,但是不灵活,且无法与写入SQL语句对应,所以需要用DataTable返回。
方法:
DAL层:
public DataTable GetTableData(string url,string SqlWords)//连接字符串&SQL语句
{
SqlConnection co = new SqlConnection();
co.ConnectionString = url;
co.Open(); //开启连接
DataTable dt = new DataTable("getTableData"); //new一个dataTable
SqlCommand cm = new SqlCommand(SqlWords, co);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cm;
adapter.Fill(dt); //写入dataTable
co.Close();
if (dt.Rows.Count==0)
{
return null;
}
else
{
return dt;
}
}
BLL层:直接调用就好
public DataTable GetTableData(string url, string SqlWords)
{
DAL.Spectaculars dal = new DAL.Spectaculars();
return dal.GetTableData(url, SqlWords);
}
控制器:同样道理
视图页:
@{
System.Data.DataTable dt = ViewBag.dt;
}
<table class="table display" id="datatable">
<tbody id="scrolls">
@foreach (System.Data.DataRow items in dt.Rows)
{
<tr>
@for (int i = 0; i < dt.Columns.Count; i++)
{
<td>
@items[i]
</td>
}
</tr>
}
</tbody>
</table>
结果: