现在的位置: 首页 > 综合 > 正文

一些数据库常用链接语句

2013年11月29日 ⁄ 综合 ⁄ 共 3033字 ⁄ 字号 评论关闭

    数据库常用操作

    批量新增数据

 /// <summary>
        /// 数据库对应表
        /// </summary>
        /// <returns></returns>  //复制表结构
        private static DataTable GetTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("MF000", typeof(decimal));
            dt.Columns.Add("MF001", typeof(string));
            dt.Columns.Add("MF002", typeof(string));
            dt.Columns.Add("MF003", typeof(string));
            return dt;
        }
        #endregion
         /// <summary>
        /// 批量插入数据
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        bool IsRead;
        public bool AddModels(List<TransBody> users)
        {       
            DataTable dtusers = GetTable ();
            foreach (TransBody model in users)
            {
                DataRow dr_user = dtusers.NewRow();
                dr_user["MF000"] = model.MF000;
                dr_user["MF001"] = model.MF001.Trim();
                dr_user["MF002"] = model.MF002.Trim();
                dr_user["MF003"] = model.MF003.Trim();
                dtusers.Rows.Add(dr_user);
       }
     
            if (dtusers != null && dtusers.Rows.Count > 0)
            {
                using (conn =Getconn())
                {
                    conn.Open();
                    using (SqlTransaction trans = conn.BeginTransaction())
                    {
                        try
                        {
                            using (SqlBulkCopy bulk = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, trans))
                            {
                                bulk.BatchSize = dtusers.Rows.Count;
                                bulk.BulkCopyTimeout = 60;
                                bulk.DestinationTableName = "SVRYMF";
                                bulk.WriteToServer(dtusers);
                                trans.Commit();
                                IsRead = true;
                            }
                        }
                        catch
                        {
                            IsRead = false;
                            trans.Rollback();
                        }
                    }
                }
            }
            return IsRead;
        }

 扩展阅读:

using 的用法:

using 用法一: 引入命名空间,相当于java中的import ;

 用法二:定义一个范围,在范围结束时处理对象,当事件结束时会自动调用该类的dispose 来释放该类(上述范例应用此类)

用法三:别名的应用 using+别名  简便用法,包含了详细命名空间信息的具体的类型;

例如:using  class1=ConsoleApplication1.myclass;  using class2=ConsoleApplication1.myclass;

SqlTransaction 的用法:

定义为:要在sql数据库中处理的T-Sql 事务

对应常用三个方法:Save,Commit ,Rollback; 

 事务提交过程中出现任何错误,都会调用Rollback 回滚操作

其中save 是创建保护点,以便于当事件执行失败时回滚到该处,而不是回滚到起点

SqlBulkCopy  的用法:

DestinationTableName:服务器上面目标表的名称

BulkCopyTimeout:超时之前操作完成所允许的秒数

BatchSize :每一批次中的行数,在每一批结束时,将该批次中的行发送到服务器;

不过如果是一般的插入,用insert into 更为便捷

常用公共方法:

Close() ; 关闭SqlBulkCopy实例

WriteToServer();将所有行从数据源复制到SqlBulkCopy对象的DestinationTableName属性指定的目标表中

事务:

是并发控制的单位,是用户定义的操作序列,这些操作,要么做要么不做,是个不可分割的单元,通过事务,sqlserver能将逻辑相关的一组操作绑定在一起,以便服务器保持数据完整性

事务的三种提交模式:

自动提交 每条单独的语句都是一个事务,每个语句后都隐含一个commit;

显式提交:以Begin TransAction 显式开始,以commit ,rollback 显式结束《该实例中就是用显式提交》、

隐性提交:在前一个事务完成时,新事务隐式启动,每个事务仍以commit或collback显式结束

事务的特性: 原子性(不可分割),一致性(事务的执行结果必须是使数据库由一个状态更改为另外一个状态)、隔离性(一个事务的执行不能被其他事务干扰)

持续性以及永久性: 事务提交 对于数据库中的数据是永久性的

 

 

 

【上篇】
【下篇】

抱歉!评论已关闭.