寫這篇文章時,我也拿不好主意到底是該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.Closed) sqlConn.Close();
}
}
沒有最好,只求更好。如果那位高手不幸看到了這篇Post,并且認為還有更好的解決方案,歡迎回復討論!
http://m.survivalescaperooms.com/jinliangliu/archive/2006/09/11/501301.html
新聞熱點
疑難解答