博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net选择数据库表\列导出数据
阅读量:4616 次
发布时间:2019-06-09

本文共 4069 字,大约阅读时间需要 13 分钟。

遐迩之余.做了一下数据导出.因为数据库有许多数据木必要导出来.所以就做了,选择表,动态根据表选择对应的列.然后导出.有些地方需要改进...只是练下手.有时间再改吧

下面直接贴码

首先页面

//这里声明一下.其实可以做成无刷新的,使用jquery+ajax. 有空再改吧. 选择表名:
<%#Container.DataItem%>

后台cs

protected void Page_Load(object sender, EventArgs e)         {
if (!IsPostBack) { //这里sqlhelper是我的数据库操作类.就不贴出了.ExecuteReader(sql语句是查询数据库里的所有表.这个在我博客的另一篇随笔有详细介绍) SqlDataReader dr = SqlHelper.ExecuteReader("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'"); while (dr.Read()) {
this.ddlTable.Items.Add(new ListItem() { Text = dr.GetString(0), Value = dr.GetString(0) }); } this.ddlTable.DataBind(); } }
     //根据选择的表.去找出相应的列.这里有点二了.竟然用存储过程..涐晕了.以后再改 protected void ddlTable_SelectedIndexChanged(object sender, EventArgs e)         {
string tname = this.ddlTable.SelectedValue; SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@tablename", SqlDbType.NVarChar) { Value =tname } }; using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DbConnString"].ConnectionString)) {
IList
list = new List
(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "test"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddRange(parms); conn.Open(); using (IDataReader reader = cmd.ExecuteReader()) {
while (reader.Read()) {
list.Add(reader.GetString(0)); } } conn.Close(); this.Gridview1.DataSource = list; this.Gridview1.DataBind(); } }
      //这里就是导出txt protected void Button1_Click(object sender, EventArgs e)         {
string sb=""; foreach (GridViewRow item in Gridview1.Rows) {
CheckBox ck = item.FindControl("CheckBox1") as CheckBox; if (ck.Checked) {
sb += ck.Text + ','; } } if (!string.IsNullOrEmpty(sb)) {
string a = sb.Substring(0,sb.Length- 1); string sql = "select " + a + " from " + this.ddlTable.SelectedValue; DataSet ds = SqlHelper.ExecuteDataset(sql); DataTable dt = ds.Tables[0]; string path=Server.MapPath("/")+this.ddlTable.SelectedValue+".txt"; if (!File.Exists(path)) {
CreateToFile(this.ddlTable.SelectedValue); } for (int i = 0; i < dt.Rows.Count; i++) {
for (int j = 0; j< dt.Columns.Count; j++) {
File.AppendAllText(path, dt.Rows[i][j].ToString()+"$DD$", Encoding.UTF8); } File.AppendAllText(path,"$RR$", Encoding.UTF8); } } } public void CreateToFile(string name) {
string FileName = Server.MapPath("/")+name+".txt"; using (StreamWriter SW = new StreamWriter(FileName, true, Encoding.UTF8)) {
SW.AutoFlush = true; SW.Write(string.Empty); SW.Close(); } }

这里就把存储过程贴出来,其实可以不用存储过程的...希望大家要是使用的时候可以直接用sql

1 USE [FBBlock]  2 GO  3 /****** Object:  StoredProcedure [dbo].[test]    Script Date: 12/05/2011 09:49:42 ******/  4 SET ANSI_NULLS ON  5 GO  6 SET QUOTED_IDENTIFIER ON  7 GO  8 ALTER procedure [dbo].[test]  9  @tablename nvarchar(50) 10  as 11  select name from syscolumns where id=object_id(''+@tablename+'')

转载于:https://www.cnblogs.com/liguanghui/archive/2011/12/05/2276395.html

你可能感兴趣的文章
1.初识代码审计-基础
查看>>
[Vue-rx] Stream an API using RxJS into a Vue.js Template
查看>>
解决VC几个编译问题的方法——好用
查看>>
SPOJ #11 Factorial
查看>>
City Upgrades
查看>>
“人少也能办大事”---K2 BPM老客户交流会
查看>>
关于七牛进行图片添加文字水印操作小计
查看>>
DataSource数据库的使用
查看>>
CentOS开启samba实现文件共享
查看>>
MSSQL使用sqlbulkcopy批量插入数据
查看>>
证明一个数能被3整除,当且仅当它的各位数的和能被3整除
查看>>
2018秋寒假作业4—PTA编程总结1
查看>>
android自适应屏幕
查看>>
2019-北航面向对象-电梯作业总结
查看>>
SqlHelper
查看>>
初识算法、数据结构
查看>>
Luogu4069 SDOI2016 游戏 树链剖分、李超线段树
查看>>
Java的内部类真的那么难以理解?
查看>>
一文搞懂Java环境,轻松实现Hello World!
查看>>
hash实现锚点平滑滚动定位
查看>>