1

我在 database1 中有 tableA,在 database2 中有 tableA,它们的列数和名称基本相同。但两者都有不同的数据。我正在尝试从 database1/tableA 中获取一行并将其插入 database2/tableA。

这就是我的想法:

SqlConnection conn = new SqlConnection("database1")
SqlCommand cmd = new SqlCommand("Select * from tableA where id = 1");
connection.Open()
SqlDataReader reader = cmd.ExecuteReader();

if(reader !=null )
var data = reader;

connection.Close();

然后我执行与上述相同的步骤打开一个新连接并尝试将数据变量值插入到 database2 中的 tableA 中。

这是正确的方法吗?有一个更好的方法吗?

4

3 回答 3

3

我会使用数据库间查询来做到这一点。在 MSS 2005/2008 中,您可以将两个服务器“链接”在一起,只要它们可以互相看到。完成后,您可以通过以点表示法指定链接服务器名称、数据库、模式所有者和表来引用链接数据库的表。这将允许插入选择:

INSERT INTO TableA --in database1
{
   /*columns*/
}
SELECT /*columns*/ from remoteServer.database2.dbo.TableB
WHERE /*dupe-checking, other conditions*/

如果两个数据库在同一台服务器上,你甚至不必链接;只需在远程数据库上的表前面加上数据库名称和架构所有者(或者如果它是默认的“dbo”,请在数据库名称和表名之间使用两个点。

于 2012-09-05T16:06:45.407 回答
1

您可以改用此查询

INSERT INTO DATABASE2.dbo.TABLEA T1
SELECT * FROM DATABASE1.dbo.TABLEA T2
WHERE T2.ID = 1

如果两个数据库位于同一服务器中,则以下 c# 代码应该可以工作。

SqlConnection conn = new SqlConnection("Enter Connection String of DB, in which you insert the records.(in ur example it is,DATABASE2)");
            string cmdText=@"INSERT INTO DATABASE2.dbo.TABLEA T2
                             SELECT * FROM DATABASE1.dbo.TABLEA T1
                             WHERE T1.ID = 1";
            SqlCommand cmd = new SqlCommand(cmdText, conn);
            cmd.ExecuteNonQuery();
于 2012-09-05T16:03:12.223 回答
0
        string connection_String = @""; //your connection string
        try
        {
            using (SqlConnection con = new SqlConnection(connection_String))
            {
                string sql = "INSERT INTO table_copy_to " +
                    "(column1, column2, column3 ... columnn) " +
                "SELECT column1, column2, column3 ... column FROM table_copy_from";
                con.Open();
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    int rowEffected = cmd.ExecuteNonQuery();
                    if (rowEffected > 0)
                    {
                        Console.WriteLine("Excuted Successfully ...");
                    }
                    else
                    {
                        Console.WriteLine("Some problem occur");
                    }
                } 
            }
        }

        catch (Exception ex)
        {
            Console.WriteLine("Exception : " + ex);
        }
于 2015-04-27T06:27:56.223 回答