首页 > 数据库 > Access > 正文

Access数据库、多条数据Insert

2019-11-02 14:15:01
字体:
来源:转载
供稿:网友

当下Access数据库可能要被遗忘了!比较这个轻量级数据库被精简了许多功能,个人感觉用起来还是挺麻烦的!当前Access在企业项目中就是一块鸡肋。数据量小使用SQL Server是浪费,既然选择了Access就别抱怨了!如果用好了还是一块宝!废话不多说了,今天就来探讨下如何向Access中插入多条数据把!

      由于在此之前我没有用过Access数据库的,当需要想数据库中插入多条数据时,我们不妨先按照sql server的做法:“insert into tablename(column1,column2) values (a,b),(c,d),(e,f)”。于是按照这个思路,我的第一个方案出来了。

尝试一:

The Demo:

StringBuilder BuiList = new StringBuilder(string.Format("({0},0)", UserID));            foreach (RepeaterItem item in Rpt_AdminRole.Items)            {                if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)                {                    HtmlInputCheckBox cbRole = item.FindControl("cb_Role") as HtmlInputCheckBox;                    if (cbRole.Checked)                    {                        BuiList.Append(",(");                        BuiList.Append(UserID);                        BuiList.Append(",");                        BuiList.Append(cbRole.Value);                        BuiList.Append(")");                    }                }            }

The Dal:

        /// <summary>        /// 添加Role关系        /// </summary>        /// <param name="roleContact">角色关系 eg: "(1,1),(1,2)"</param>        /// <returns></returns>        public static int InsertRoleContact(string roleContact)        {            string sql = "insert into Sky_Admin_Role(AdminID,RoleID) values "+roleContact;            return Common.OleDbHelper.ExecuteNonQuery(CommandType.Text, sql, null);        }

exec下就会出现这样的错误:SQL 语句的结束位置缺少分号 (;)。

      Access对sql的支持果然是大大精简,到此尝试一失败!, 很快在我有另外idea。sql server 多表查询对select table 的支持!我可以直接传一个DataTable到sql语句中,说干就干! 

尝试二

The Demo : 获取DataTable

        public DataTable GetInsertSQL(Repeater rep,string controlID)        {            DataTable data = new DataTable();            data.Columns.Add("AdminID");            data.Columns.Add("RoleID");            foreach (RepeaterItem item in rep.Items)            {                if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)                {                    HtmlInputCheckBox cb = item.FindControl(controlID) as HtmlInputCheckBox;                    if (cb.Checked)                    {                        DataRow row = data.NewRow();                        row.ItemArray = new object[] { UserID, cb.Value};                        data.Rows.Add(row);                    }                }            }            return data;        }

The Dal:

public static int InsertRoleContact(DataTable dt)        {            string sql = "insert into Sky_Admin_Role(AdminID,RoleID) select * from @Data";            OleDbParameter[] param = new OleDbParameter[] {             new OleDbParameter("@Data",?){Value =dt}            };            return Common.OleDbHelper.ExecuteNonQuery(CommandType.Text, sql, param);        }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表