将自定义的内存表DataTable写入数据库表中的方法,自定义映射表和列。

        public int direct_写(System.Data.DataTable _dt, string _query, string _source, string _dataset, params string[] _columns)
        {
            //将内存表的每一行都设置成向数据库添加状态
            foreach (System.Data.DataRow _dr in _dt.Rows)
                _dr.SetAdded();
            //获取配置文件的连接字符串,这里需要自己来定义了,必竟配置文件我没共享
            string conString = string.Empty;
            if (System.Configuration.ConfigurationManager.ConnectionStrings["cZy"] != null)
                conString = System.Configuration.ConfigurationManager.ConnectionStrings["cZy"].ConnectionString;


            //这是adonet需要经常配置的,不多说了。
            System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(conString);
            System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand(_query, con);
            System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(com);
            //为adonet的Adapter配置器生成添删改操作,需要有Select语句的Command对象支持
            System.Data.SqlClient.SqlCommandBuilder builder = new System.Data.SqlClient.SqlCommandBuilder(adapter);
            //进行映射,哪个内存表对应哪个数据表;
            adapter.TableMappings.Add(_source, _dataset);
            //对数据表的每个字段与内存表的每个字段进行映射,这里需要注意_source是数据表,这样映射就可以了;
            for (int _index = 0; _index < _columns.Length-1; _index++)
                adapter.TableMappings[_source].ColumnMappings.Add(_columns[_index], _columns[_index + 1]);
            //对执行sql语句执行不设时长,不执行完程序一直挂起;
            com.CommandTimeout = 0;
            //将内存表数据写入数据表
            int _count = adapter.Update(_dt);
            //返回更新的数据行记录;
            return _count;
        }

你可能感兴趣的:(C#,ASP.NET,C#,ASP.NET,ADO.NET)