凯锐

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
写这篇文章时,我也拿不好主意到底是该Post上来呢,还是不Post!因为这实在好像没有什么的。后来转念一想,反正是blog吗,不就是写写自己的心情之类的嘛,管他有没有技术含量,只要不放到首页上影响整体博客的技术形象就可以了。所以我就把这篇文章post上来了。高手就免看了。:)
事情源于一个网友的一个要求:她自己说是一个作业,要将pubs中的所有用户表的内容分别用xml文件导出保存起来。本来想当时给她答案的,可真不好彩的是被一个客户的电话逮住,只好回到家中为她做一下。我也不清楚,她是扮猪吃老虎还是真是初学者。不过从和她对话来看,倒也是性情中女子。应该还是蛮可爱的一个女孩子啦!隐隐约约谈话当中,我想她可能自己也已经完成这个“作业”的,可能她自己拿不准自己能不能“及格”才问我的。呵呵...
拿着这份要求,很快,脑子里就闪现DataSet有一个WriteXml的方法。事实上,我也是采用这个简单的方法来完成她的作业的。当然,在这个小小的作业上,我还是将几乎将ADO.NET用了个遍,包括SqlConnection,SqlDataAdapter,SqlCommand,SqlDataReader和DataSet。另外还使用了一个ArrayList数组。ArrayList还真是好东西,VS6.0好象是没有的吧。(不知道有没有,反正我以前好象没有用过,呵呵...)整个代码实现,我都只在一个Button的Click事件中实现。代码不多。干脆一同post上来。
        private void button1_Click(object sender, System.EventArgs e)
        {
            
string strConn = "data source=localhost;initial catalog=pubs;" + "Integrated Security=SSPI";
            
string strSql = "select Name from sysobjects where xtype='u' and status>=0";
            SqlConnection sqlConn 
= new SqlConnection(strConn);
            SqlCommand sqlComm 
= new SqlCommand(strSql,sqlConn);
            SqlDataReader sqlRead 
= null;
            DataSet ds 
= null;
            ArrayList al 
= new ArrayList();
            
if(sqlConn .State == ConnectionState.Closed)    sqlConn.Open();
            
try
            {
                sqlRead 
= sqlComm.ExecuteReader();
                
while(sqlRead.Read())
                {
                    
string strTableName = sqlRead.GetValue(0).ToString();
                    al.Add(strTableName);
                }
                sqlRead.Close();
                
for(int i =0;i<al.Count;i++)
                {
                    
string strTable = "Select * From "+al[i].ToString();
                    SqlDataAdapter sqlAdapter 
= new SqlDataAdapter(sqlComm);
                    ds 
= new DataSet();
                    --sqlRead.Close();
                    sqlAdapter.Fill(ds,al[i].ToString());
                    ds.WriteXml(al[i].ToString()
+".xml");
                }
                MessageBox.Show(
"finish it!");
            }
            
catch(Exception E)
            {
                MessageBox.Show(E.ToString());
            }
            
finally
            {
                
if(sqlConn.State == ConnectionState.Open) sqlConn.Close();
            }
        }

没有最好,只求更好。如果那位高手不幸看到了这篇Post,并且认为还有更好的解决方案,欢迎回复讨论!

posted on 2006-09-11 20:20  凯锐  阅读(657)  评论(1编辑  收藏  举报