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);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章