.net之旅-批量插入数据库(45)

    技术2022-05-11  67

    批量数据处理有事务处理的方式。而本文使用的是DataTable数据集方式来更新。本文实现的是将选中的用户功能listNum[]插入到用户名为userId的userFunction表。

    1 数据库userFunction表:

    字段名  变量类型 字长

     UserId varchar 15  FunctionId int 4  sn int 4 

    其中sn是主键 自增

    2 相关代码:

    /// <summary>    /// 批量插入数据库    /// </summary>    /// <param name="userId"></param>    /// <param name="listNum"></param>      private   void  InsertUserRights(String userId, String[] listNum)     {        DeleteUserRights(userId);        // 新建一个DataTable的实例dt        DataTable dt = new DataTable();        // 声明一个DataRow实例dr        DataRow dr;        // 说明DataTable表里的包含哪些字段        dt.Columns.Add(new DataColumn("UserId"typeof(string)));        dt.Columns.Add(new DataColumn("FunctionId"typeof(Int32)));         foreach (string listValue in listNum)        {            if (listValue.Length != 0)            {                //i = Convert.ToInt16(listValue);                // 用DataTable的NewRow方法新建一个DataRow对象的实例dr                dr = dt.NewRow();                dr[0= userId;                dr[1= listValue;                dt.Rows.Add(dr);            }        }        SqlConnection conn = DbConn.GetConn();                     SqlCommand cmd = new SqlCommand("Insert Into userFunction(Userid,FunctionId) values(@UserId,@FunctionId)");        SqlDataAdapter adapt = new SqlDataAdapter("select * from userFunction where 1=0", conn);                     SqlCommandBuilder sqlCmdBud = new SqlCommandBuilder(adapt);                SqlParameter UserIdParam = new SqlParameter("@UserId",SqlDbType.VarChar,15);        SqlParameter FunctionIdParam = new SqlParameter("@FunctionId",SqlDbType.Int,4);                adapt.Fill(dt);        adapt.SelectCommand.Parameters.Add(UserIdParam);        adapt.SelectCommand.Parameters.Add(FunctionIdParam);        adapt.SelectCommand.Parameters["@UserId"].SourceColumn = "UserId";        adapt.SelectCommand.Parameters["@FunctionId"].SourceColumn = "FunctionId";                adapt.UpdateCommand = sqlCmdBud.GetUpdateCommand();        if (dt != null)        {            adapt.Update(dt);        }    }

     测试通过


    最新回复(0)