Asp.net获取数据库文件中表名的列表,并显示
1.了解一下Sqlconnection的GetSchema()方法:
protected void Page_Load(object sender, EventArgs e)
{
superSqlConnection mycnn = new superSqlConnection();
mycnn.open();
DataTable dt = mycnn.cnn.GetSchema("tables");
GridView gv = new GridView();
gv.DataSource = dt;
gv.DataBind();
div1.Controls.Add(gv);
mycnn.close();
}
GetSchema()返回的对象是一个DataTable,参数填写Tables,暂时还不明白。
通过gridview可以看到这个表的结构如下:
主要看后面的两列,TABLE_NAME就是这个数据库文件里所有的表的名字,TABLE_TYPE是这个表的类型,这里用的是SQL server,如果是access ,这个表的信息就特别多,而且TABLE_TYPE也有很多不同的值。
2.使用DataTable.Select()方法:
DataTable.Select()的返回值是一个包含符合条件的DataRow的数组。
总之就是返回了一个你想要的一个DataRow 的数组。
superSqlConnection mycnn = new superSqlConnection();
mycnn.open();
DataTable dt = mycnn.cnn.GetSchema("tables");
string str="";
foreach (DataRow dr in dt.Select("TABLE_TYPE='BASE TABLE'"))
{
str += dr["TABLE_NAME"].ToString()+"<br/>";
}
Response.Write(str);
mycnn.close();
dt.Select(“TABLE_TYPE=‘BASE TABLE’”),返回的是所有的TABLE_TYPE=BASE TABLEd的行,之后在遍历这个数组,每次读取这个行内的TABLE_NAME的字段的值。输出如下:
这样就拿到了这个数据库里的所有的表。
3.将所有的表名导入到dropdownList 内:
(1)前台界面放入一个DropDownList,ID=“DropDownList1”。
(2)后台代码为:
superSqlConnection mycnn = new superSqlConnection();
mycnn.open();
DataTable dt = mycnn.cnn.GetSchema("tables");
ListItem li;
foreach (DataRow dr in dt.Select("TABLE_TYPE='BASE TABLE'"))
{
li = new ListItem();
li.Text = dr["TABLE_NAME"].ToString();
DropDownList1.Items.Add(li);
}
mycnn.close();
显示效果:
4,添加一个按钮,查看选中项的数据表。在用一下Dataset和SqlDataAdapter
(1)Dataset和SqlDataAdapter:
最常用的是DataAdapter对象的Fill()方法给他填充数据。
DataSet ds = new DataSet();
SqlDataAdapter adapt = new SqlDataAdapter(sqlcmd,con);
adapt.Fill(ds,"mytest");
(2)添加一个查看按钮:
后台代码:
protected void Button1_Click(object sender, EventArgs e)
{
superSqlConnection mycnn = new superSqlConnection();
mycnn.open();
string tableName = DropDownList1.SelectedItem.Text;
string sql = "select * from " + tableName;
DataSet ds = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(sql,mycnn.cnn);
adapter.Fill(ds);
//用gridView 显示数据
GridView gv = new GridView();
gv.DataSource = ds;
gv.DataBind();
div1.Controls.Add(gv);
mycnn.close();
}
点击查看之后:
在切换为另一个表:
这样就可以随意的查看不同的表了。
5.总结:
这次用到了很多不了解的东西,GetSchema()方法,DataTable.Select()的方法,还有DataSet以及SqlDataAdapter。现在只是知道了一点很浅的用法,具体的还是不清楚,之后有时间的话,最好仔细了解一遍。