程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Datatbel和string之間的相互轉換

Datatbel和string之間的相互轉換

編輯:關於.NET

今天在做一個需求的時候,需要將datatable轉化string,下面是二者之間的一個可逆轉換

Datatable 到 string

public static string DataTableToString(DataTable dt)
         {
             //!@&,#$%,^&*為字段的拼接字符串
             //為了防止連接字符串不在DataTable數據中存在,特意將拼接字符串寫成 特殊的字符!
             StringBuilder strData = new StringBuilder();
             StringWriter sw = new StringWriter();
              //DataTable 的當前數據結構以 XML 架構形式寫入指定的流
             dt.WriteXmlSchema(sw);
             strData.Append(sw.ToString());
             sw.Close();
             strData.Append("@&@");
             for (int i = 0; i < dt.Rows.Count;i++)              //遍歷dt的行
             {
                 DataRow row = dt.Rows[i];
                 if (i > 0)                                     //從第二行數據開始,加上行的連接字符串
                 {
                     strData.Append("#$%");
                 }
                 for (int j = 0; j < dt.Columns.Count; j++)     //遍歷row的列
                 {
                     if (j > 0)                                 //從第二個字段開始,加上字段的連接字符串
                     {
                         strData.Append("^&*");
                     }
                     strData.Append(Convert.ToString(row[j])); //取數 據
                 }
             }
             return strData.ToString();
         }

string 到Datatable

public static DataTable StringToDataTable(string strdata)
         {
             if (string.IsNullOrEmpty(strdata))
             {
                 return null;
             } 
             DataTable dt = new DataTable();
             string[] strSplit = {"@&@"};
             string[] strRow = {"#$%"}; //分解行的字符串
             string[] strColumn = {"^&*"}; //分解字段的字符串
             string[] strArr = strdata.Split(strSplit,  StringSplitOptions.None);
             StringReader sr = new StringReader(strArr[0]);
             dt.ReadXmlSchema(sr);
             sr.Close();

             string   strTable = strArr[1]; //取表的數據
             if (!string.IsNullOrEmpty(strTable))
             {
                 string[] strRows = strTable.Split(strRow,  StringSplitOptions.None); //解析成行的字符串數組
                 for (int rowIndex = 0; rowIndex <  strRows.Length; rowIndex++) //行的字符串數組遍歷
                 {
                     string vsRow = strRows[rowIndex]; //取行的字 符串
                     string[] vsColumns = vsRow.Split(strColumn,  StringSplitOptions.None); //解析成字段數組
                     dt.Rows.Add(vsColumns);
                 }
             }
             return dt;
         }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved