zoukankan      html  css  js  c++  java
  • sql server inser相关处理(添加一条,一次添加多条,Bulk插入多条)

    1,insert语句

    insert into 表一(字段一,字段二,字段三) value(值一,值二,值三)
    

     2,sql 插入多条语句,其中完整值之间用逗号分割

    insert into 表一(字段一,字段二,字段三) values(值一,值二,值三),(值一,值二,值三)
    

     3,inser into...select...即从不同的表中直接添加到表中,其中要求字段名称与数据类型保持一致

    insert into 表二(字段一,字段二,字段三)
         select 字段一,字段二,字段三
    from 表一

     在程序中如果有简单的insert语句插入100条数据,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题。可以使用Bulk和表值参数

    可以使用Stopwatch类检测程序运行时间,优化程序

    Stopwatch sw = new Stopwatch();  //获取程序运行时间
     sw.Start();
     sw.Stop();
    sw.ElapsedMilliseconds 可获取到程序运行时间
    

     4,Bulk的使用,bulk方法主要思想是通过在客户端把数据都缓存在Table中,然后利用SqlBulkCopy一次性把Table中的数据插入到数据库

       SqlConnection sqlConn = new SqlConnection(
                    ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);
                    SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
                    bulkCopy.DestinationTableName = "BatchInsertIntoTable"; //目标表
                    bulkCopy.BatchSize = dt.Rows.Count;
    
                    try
                    {
                        sqlConn.Open();
                        if (dt != null && dt.Rows.Count != 0)
                            bulkCopy.WriteToServer(dt);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        sqlConn.Close();
                        if (bulkCopy != null)
                            bulkCopy.Close();
                    } 
    

     5,表值参数,表值参数是SQL Server 2008新特性,简称TVPs。对于表值参数不熟悉的朋友,可以参考最新的book online

      SqlConnection sqlConn = new SqlConnection(
             ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);
                    const string TSqlStatement =
                     "insert into BatchInsertIntoTable (Id,UserName,Pwd)" +
                     " SELECT nc.Id, nc.UserName,nc.Pwd" +
                     " FROM @NewBulkTestTvp AS nc";
                    SqlCommand cmd = new SqlCommand(TSqlStatement, sqlConn);
                    SqlParameter catParam = cmd.Parameters.AddWithValue("@NewBulkTestTvp", dt);
                    catParam.SqlDbType = SqlDbType.Structured;
                           catParam.TypeName = "dbo.ReadData";
                    try
                    {
                        sqlConn.Open();
                        if (dt != null && dt.Rows.Count != 0)
                        {
                            cmd.ExecuteNonQuery();
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        sqlConn.Close();
                    }
    
  • 相关阅读:
    poj3613 Cow Relays【好题】【最短路】【快速幂】【离散化】
    poj1734 Sightseeing trip【最小环】
    poj1094 Sorting It All Out【floyd】【传递闭包】【拓扑序】
    BZOJ2200 道路和航线【好题】【dfs】【最短路】【缩点】
    CH6101 最优贸易【最短路】
    poj3662 Telephone Lines【最短路】【二分】
    codeforces#514 Div2---1059ABCD
    进阶指南---基本算法【阅读笔记】
    hdu5954 Do not pour out【积分】【二分】【待补.....】
    mariadb yum安装
  • 原文地址:https://www.cnblogs.com/jingjing-blogs/p/6511056.html
Copyright © 2011-2022 走看看