Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在这种情况下,是否应该组合SQL命令_Sql_C# 4.0 - Fatal编程技术网

在这种情况下,是否应该组合SQL命令

在这种情况下,是否应该组合SQL命令,sql,c#-4.0,Sql,C# 4.0,我有以下c#代码: 基本上,我从TableA/Database1中选择一行,并将其插入TableA/Database2 然后,我再次打开连接并从TableB/Database1中选择多行(使用从TableA/Database1检索的newID)并插入TableB/Database2 我的问题是这样做是否正确?还是应该把这些结合起来?如果这些应该结合起来,谁能告诉我实现这一目标的最佳方法 int newID = 0; using (var con1 = new SqlConnection(conS

我有以下c#代码:

基本上,我从TableA/Database1中选择一行,并将其插入TableA/Database2

然后,我再次打开连接并从TableB/Database1中选择多行(使用从TableA/Database1检索的newID)并插入TableB/Database2

我的问题是这样做是否正确?还是应该把这些结合起来?如果这些应该结合起来,谁能告诉我实现这一目标的最佳方法

int newID = 0;
using (var con1 = new SqlConnection(conString1))
using (var con2 = new SqlConnection(conString2))
{
    con1.Open();
    con2.Open();
    using (var selectCommand = new SqlCommand(sqlSelect, con1))
    {
        using (var reader = selectCommand.ExecuteReader())
        {
            try
            {
                if (reader != null)
                    if (reader.Read())
                    {
                        using (var insertCommand = new SqlCommand(sqlInsert, conTarget))
                        {
                            for (int i = 0; i < reader.FieldCount; i++)
                            {
                                insertCommand.Parameters.AddWithValue(
                                    "@" + reader.GetName(i), reader[i]);
                            }
                            newID = (int)insertCommand.ExecuteScalar();
                        }
                    }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                reader.Close();
            }
        }
    }
}

我会这样做:

  • 打开connection1并从第一个数据库中选择所需的所有数据。将此数据存储在某个对象中
  • 打开连接2并根据在步骤1中创建的对象中存储的值更新第二个数据库
  • 这将使您能够使用到每个数据库的一个连接,并完成与上面所做的相同的事情


    如果需要进一步帮助,请告诉我。

    两个数据库都在同一台服务器上?在这种情况下,如何同时运行两个sql命令?我是否可以使用using语句并在一个连接下运行两个命令?你能给我看一些代码吗?
    using (var con1 = new SqlConnection(ConString1))
    {
        con1.Open();               
        var cmd = new SqlCommand(query , con1);
        var reader = cmd.ExecuteReader();
    
        using (var con2 = new SqlConnection(conString2))
        {
            con2.Open();
    
            using (var sbc = new SqlBulkCopy(conString2))
            {
                sbc.BulkCopyTimeout = 2000;
                sbc.DestinationTableName = "student";
                try
                {
                    if (reader != null) 
                        sbc.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {                            
                    reader.Close();
                }
            }
        }
    }