2014年3月20日 星期四

您必須加入參考至組件 'App_Code.xevmfwa_, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

您必須加入參考至組件 'App_Code.xevmfwa_, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

<configuration>
<system.web>
<compilation debug="true" batch="false"> <!--此行加入Web.config解決-->
</compilation>
</system.web>
</configuration>

2014年3月13日 星期四

DataTable Select RowFilter 資料複製到另一個DATATABLE

DataTable Select RowFilter 資料複製到另一個DATATABLE

//Create DataTable
                DataTable dt = new DataTable();
                DataColumn column;
                DataRow row;

                // Create column.
                column = new DataColumn();
                column.DataType = Type.GetType("System.Int16");
                column.ColumnName = "ID";
                dt.Columns.Add(column);

                // Create new DataRow objects and add to DataTable.
                for (int i = 1; i <= 10; i++)
                {
                    row = dt.NewRow();
                    row["ID"] = i.ToString();
                    dt.Rows.Add(row);
                }

                //RowFilter exsample1
                dt.DefaultView.RowFilter = "ID=1";
                //RowFilter exsample2
                dt.DefaultView.RowFilter = "ID>1";
             
                //sort
                dt.DefaultView.Sort = "id desc";

                //RowFilter Copy New Table
                DataTable dtNew = dt.Clone();
                foreach(DataRow dr in dt.Select("ID > 5","ID"))
           {
               dtNew.ImportRow(dr);
           }
               //Copy all row to new Table
              DataTable dtNew = dt.Clone();
            foreach (DataRow dr in dt.Rows)
            {
                dtNew.ImportRow(dr);
            }

2014年3月3日 星期一

DataTable刪除欄位Column, 新增查詢刪除DataRow

How remove columns from ADO.NET DataTable?

DataTable remove column
  1. dt.Columns.Remove(string name)
  2. dt.Columns.Remove("id")
  3. //or
  4. dt.Columns.Remove(int index)
  5. dt.Columns.Remove(0)

Create New DataTable
  1. DataTable dt = new DataTable();

Create New Column
  1. DataColumn column;
  2. column = new DataColumn();
  3. column.DataType = Type.GetType("System.String");
  4. column.ColumnName = "ID";
  5. dt.Columns.Add(column);

Create new DataRow objects and add to DataTable.
  1. DataRow row;
  2. for (int i = 1; i <=10; i++)
  3. {
  4. row = dt.NewRow();
  5. row["ID"]= i.ToString();
  6. dt.Rows.Add(row);
  7. }

Select Row
  1. row = dt.Select("ID='1'")[0];

Delete Row
  1. row = dt.Select("ID='2'")[0];
  1. row.Delete();

AcceptChanges
  1. dt.AcceptChanges();

2014年3月2日 星期日

SQL 多筆Insert新增資料

SQL 多筆Insert新增資料
使用簡易方法=>傳入DataTable後自動組合成SQL指令後寫入DataBase

//1.取得空的DataTable
  1. DataTable dt = GetEmptyTable("Table1");
//2.資料放入DataTable
  1. DataRow dr = dt.NewRow();
  2. dr["id"] = "1";
  3. dr["no"] = "A001";
  4. dt.Rows.Add(dr);
  5.  
//3.DataTable存入資料庫
  1. MultiInsert(dt, "Table1");
  2.  

//Function
  1.         /// <summary>
  2.         /// 多筆新增資料
  3.         /// </summary>
  4.         /// <param name="dt"></param>
  5.         /// <param name="tableName"></param>
  6.         /// <returns></returns>
  7.         public static int MultiInsert(DataTable dt, string tableName)
  8.         {
  9.             try
  10.             {
  11.                 int count = dt.Rows.Count;
  12.                 string ConnectionString = ConfigurationManager.ConnectionStrings[BPM.BPM_ConnStr].ToString();
  13.                 using (SqlConnection conn = new SqlConnection(ConnectionString))
  14.                 {
  15.                     conn.Open();
  16.                     //組合SQL  Insert String
  17.                     string mysql = InsertString_Collect(tableName, dt);
  18.                     SqlTransaction mytrans = conn.BeginTransaction();
  19.                     //逐筆檢驗 逐筆新增
  20.                     foreach (DataRow dr in dt.Rows)
  21.                     {
  22.                         //檢驗比對資料內容是否正確
  23.                         //如c2 ==aa then c4=false...等
  24.                         if (1 == 1)
  25.                         {
  26.                             using (SqlCommand cmd = new SqlCommand(mysql, conn))
  27.                             {
  28.                                 cmd.Transaction = mytrans;
  29.                                 foreach (DataColumn col in dt.Columns)
  30.                                 {
  31.                                     cmd.Parameters.AddWithValue("@" + col.ColumnName, dr[col.ColumnName]);
  32.                                 }
  33.                                 cmd.ExecuteNonQuery();
  34.                             }
  35.                         }
  36.                     }
  37.                     mytrans.Commit();
  38.                     return count;
  39.                 }
  40.             }
  41.             catch (Exception)
  42.             {
  43.                 throw;
  44.             }
  45.         }
  46.  
  47.         /// <summary>
  48.         /// 組出SQL Insert String
  49.         /// </summary>
  50.         /// <param name="tableName"></param>
  51.         /// <param name="dt"></param>
  52.         /// <returns></returns>
  53.         public static string InsertString_Collect(string tableName, DataTable dt)
  54.         {
  55.             try
  56.             {
  57.                 string sql = "INSERT INTO " + tableName + "({p}) VALUES ({v})";
  58.                 string p = string.Empty;
  59.                 string v = string.Empty;
  60.                 foreach (DataColumn col in dt.Columns)
  61.                 {
  62.                     p += col.ColumnName.ToString() + ",";
  63.                     v += "@" + col.ColumnName.ToString() + ",";
  64.                 }
  65.                 p = p.Substring(0, int.Parse(p.Length.ToString()) - 1);
  66.                 v = v.Substring(0, int.Parse(v.Length.ToString()) - 1);
  67.                 sql = sql.Replace("{p}", p);
  68.                 sql = sql.Replace("{v}", v);
  69.                 return sql;
  70.             }
  71.             catch (Exception)
  72.             {
  73.                 throw;
  74.             }
  75.         }
  76.   /// <summary>
  77.         /// 取得空的Table
  78.         /// </summary>
  79.         /// <param name="tableName">Database Table Name</param>
  80.         /// <returns>DataTable</returns>
  81.         public static DataTable GetEmptyTable(string tableName)
  82.         {
  83.             DataTable dt = new DataTable();
  84.             try
  85.             {
  86.                 SqlConnection cn = new SqlConnection();
  87.                 SqlCommand cmd = new SqlCommand();
  88.                 SqlDataAdapter da = new SqlDataAdapter();
  89.                 DataSet ds;
  90.                 string sql = string.Empty;
  91.                 string sqlwhere = string.Empty;
  92.                 string sqlsort = string.Empty;
  93.                 #region Execute SQL
  94.                 cn.ConnectionString = ConfigurationManager.ConnectionStrings[BPM.BPM_ConnStr].ToString();
  95.                 cmd.Connection = cn;
  96.                 cmd.CommandText = "SELECT * FROM " + tableName + " WHERE 1=0";
  97.                 cn.Open();
  98.                 da.SelectCommand = cmd;
  99.                 sql = da.SelectCommand.CommandText;
  100.                 ds = new DataSet();
  101.                 da.Fill(ds, "dt");
  102.                 dt = ds.Tables["dt"];
  103.                 cn.Close();
  104.                 #endregion Execute SQL
  105.             }
  106.             catch (Exception)
  107.             {
  108.                 //throw;
  109.             }
  110.             return dt;
  111.         }
  112.