C#实现SqlServer复制一个表的数据到另一个表

SqlServer复制一个表的数据到另一个表大体上分两种情况,第一种情况是目标表当前不存在的情况,下面代码中将TPerson表数据复制到TNew表中,TNew表当前不存在。

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static string ConnectionString = @"Data Source=(localdb)\Projects;Initial Catalog=DbTest;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False";

        static void Main(string[] args)
        {
            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                SqlCommand command = new SqlCommand();
                command.Connection = connection;
                command.CommandText = "select * into [TNew] from [TPerson]";
                try
                {
                    connection.Open();
                    command.ExecuteNonQuery();
                    Console.WriteLine("复制表成功");
                }
                catch
                {
                    Console.WriteLine("复制表失败");
                }
            }
            Console.ReadKey(true);
        }
    }
}

第二种情况是目标表当前已经存在,此时又需要分两种情况,第一种情况:TPerson表的主键为自增Id,此时只能选择非主键列进行复制,代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static string ConnectionString = @"Data Source=(localdb)\Projects;Initial Catalog=DbTest;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False";

        static void Main(string[] args)
        {
            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                SqlCommand command = new SqlCommand();
                command.Connection = connection;
                command.CommandText = "insert into [TNew] select Name,Gender from [TPerson]";

                try
                {
                    connection.Open();
                    command.ExecuteNonQuery();
                    Console.WriteLine("复制表成功");
                }
                catch
                {
                    Console.WriteLine("复制表失败");
                }
            }
            Console.ReadKey(true);
        }
    }
}

第二种情况:TPerson表主键为非自增Id,此时可选择全部列进行复制,代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static string ConnectionString = @"Data Source=(localdb)\Projects;Initial Catalog=DbTest;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False";

        static void Main(string[] args)
        {
            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                SqlCommand command = new SqlCommand();
                command.Connection = connection;
                command.CommandText = "insert into [TNew] select * from [TPerson]";

                try
                {
                    connection.Open();
                    command.ExecuteNonQuery();
                    Console.WriteLine("复制表成功");
                }
                catch
                {
                    Console.WriteLine("复制表失败");
                }
            }
            Console.ReadKey(true);
        }
    }
}
发布了99 篇原创文章 · 获赞 16 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/HerryDong/article/details/104048705