C#使用DataTable传递数据减少数据库访问打开关闭次数

来源:互联网 发布:ubuntu apache2 编辑:程序博客网 时间:2024/04/20 12:57
 public class mx_case_photo
    {
        private string db_url;
        public mx_case_photo(string db_url) 
        {
            this.db_url = db_url;
        }
        public mx_case_photo() 
        {


        }
        public int AddTable(DataTable dt) 
        {
            int result=0;
            using (MySqlConnection conn = new MySqlConnection(db_url)) 
            {
                conn.Open();
                using (MySqlTransaction tran=conn.BeginTransaction())
                {
                    try
                    {
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            StringBuilder sb = new StringBuilder();
                            sb.Append("INSERT INTO mxzu.mx_case_photo (city_id,case_id,title,photo,size,views,orderby,closed,clientip,dateline)");
                            sb.Append(" values(@city_id,@case_id,@title,@photo,@size,@views,@orderby,@closed,@closed,@clientip,@dateline)");
                            MySqlParameter[] sp ={
                                                 new MySqlParameter("@city_id",MySqlDbType.Int32),
                                                 new MySqlParameter("@case_id",MySqlDbType.Int32),
                                                 new MySqlParameter("@title",MySqlDbType.VarChar,50),
                                                 new MySqlParameter("@photo",MySqlDbType.Int32,225),
                                                 new MySqlParameter("@varchar",MySqlDbType.VarChar,50),
                                                 new MySqlParameter("@views",MySqlDbType.Int32),
                                                 new MySqlParameter("@orderby",MySqlDbType.Int32),
                                                 new MySqlParameter("@closed",MySqlDbType.Int32),
                                                 new MySqlParameter("@clientip",MySqlDbType.VarChar,50),
                                                 new MySqlParameter("@dateline",MySqlDbType.Int32)
                                             };
                            sp[0].Value = dt.Columns[i]["city_id"];
                            sp[1].Value = dt.Columns[i]["case_id"];
                            sp[2].Value = dt.Columns[i]["title"];
                            sp[3].Value = dt.Columns[i]["photo"];
                            sp[4].Value = dt.Columns[i]["size"];
                            sp[5].Value = dt.Columns[i]["views"];
                            sp[6].Value = dt.Columns[i]["orderby"];
                            sp[7].Value = dt.Columns[i]["clientip"];
                            sp[8].Value = dt.Columns[i]["dateline"];
                            MySqlCommand comm = new MySqlCommand(sb.ToString(), conn);
                            comm.Parameters.AddRange(sp);
                            comm.Transaction = tran;
                            result = result + comm.ExecuteNonQuery();
                        }
                        tran.Commit();
                    }
                    catch (MySqlException e)
                    {
                        tran.Rollback();
                        throw e;
                    }
                    finally 
                    {
                        conn.Close();
                    }
                }
            }
            return result;
        }
    }
0 0