问题描述:从服务器A中的A表抽出数据放入DataSet中,之后想把DataSet中的内容原封不到的放入服务器B中的A表里,请问如何实现,希望提供原代码

解决方案 »

  1.   

    不放入 DetaSet 中 不可以吗
      

  2.   

    本来是打算用linkserver但是服务器A有可能很多,如果每个服务器A都创建一个linkserver就比较麻烦,当然不知道你们说的 不放入 DetaSet  那是用什么方法来实现
      

  3.   

    将数据库一条一条从DATASET中取出.再用INSERT插入数据库
      

  4.   

    将数据从DATASET中一条一条取出.后用INSETR插入数据库
      

  5.   

    我现在就是用的上面的方法,但是感觉数据量大的时候会影响速度。我想知道有没有办法一次性把dataset里面的数据导入到数据库中。
      

  6.   

    for ( int i = 0; i< iLockNum; i++ )
    {
    oraRow0 = oraTable0->Rows[i];

    OBJECT_NAME = oraRow0->ItemArray[0]->ToString();
    SESSION_ID = oraRow0->ItemArray[1]->ToString();
    ORACLE_USERNAME = oraRow0->ItemArray[2]->ToString();
    PROCESS = oraRow0->ItemArray[3]->ToString();
    LOCKED_MODE = oraRow0->ItemArray[4]->ToString(); MACHINE = oraRow0->ItemArray[5]->ToString();
    STATUS = oraRow0->ItemArray[6]->ToString();
    SID_ = oraRow0->ItemArray[7]->ToString();
    SERIAL_ = oraRow0->ItemArray[8]->ToString();
    PROGRAM_ = oraRow0->ItemArray[9]->ToString(); MACHINE = MACHINE->Replace( Convert::ToString((System::Char)0), "" );
    insertComm = String::Format("insert into \"DATABASELOCK_NEW\"(\"OBJECT_NAME\", \"SESSION_ID\", \"ORACLE_USERNAME\", \"PROCESS\", \"LOCKED_MODE\", \"MACHINE\", \"STATUS\", \"SID_\", \"SERIAL_\", \"PROGRAM_\", \"GETTTIME\")VALUES( '{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')",OBJECT_NAME,SESSION_ID,ORACLE_USERNAME,PROCESS,LOCKED_MODE,MACHINE,STATUS,SID_,SERIAL_,PROGRAM_,CurrentTime); OleDbCommand^ command = gcnew OleDbCommand(insertComm, Conn1);
    command->ExecuteNonQuery();
    delete (IDisposable^)command; } // 循环插入数据库锁记录_结束
      

  7.   

    这是我上次做的代码....问了很多朋友...答案都是跟这个差不多的...因为数据最终都是用INSERT语句来插入..如果你有更好的方法..也请告诉我.谢谢 [email protected]
      

  8.   

    谢谢楼上的,循环插入这个我会,我现在就是用的这样的方法,我现在想 知道能不能一次性的把dataset里面的数据导入到数据库中。
      

  9.   

    OleDbDataAdapter oDataAdapter = new OleDbDataAdapter(mCommand);
            OleDbCommandBuilder builder = new OleDbCommandBuilder(oDataAdapter);               DataSet dsOld = new DataSet();
            DataSet dsNew = new DataSet(); ;
            foreach (DataTable dt in dsOld.Tables)
            {
                dsNew = new DataSet();
                dsNew.Tables.Add(dt.Copy());
                oDataAdapter.Update(ds, dt.TableName);
            }这样会不会简单点
      

  10.   

    我是循环 DataTable 
    有几个表 就循环 几次 然后插入
      

  11.   

    将表的行全部设置成ADD状态,然后提交。
      

  12.   

    一次性的把dataset里面的数据导入到数据库中关注
      

  13.   

    11 楼的mCommand 是指什么?能不能说的详细一点??
      

  14.   

     class Program
        {
            static void Main(string[] args)
            {
                string strConnFrom = @"Data Source=.\SQLEXPRESS;Initial Catalog=LoadTest;Integrated Security=SSPI;";
                string strConnTo = @"Data Source=.\SQLEXPRESS;Initial Catalog=LoadTestCopy;Integrated Security=SSPI;";
                
                DataSet dataSet = new DataSet();
                DataSet dataSetTo = new DataSet();
                int intEffected = 0;            using (SqlConnection connFrom = new SqlConnection(strConnFrom))
                {
                    SqlCommand cmdFrom = new SqlCommand("SELECT * FROM dbo.LoadTestBrowsers", connFrom);
                    SqlDataAdapter adapterFrom = new SqlDataAdapter(cmdFrom);
                    adapterFrom.Fill(dataSet);
                }            //Change row state
                dataSet.WriteXml("temp.xml");
                dataSetTo.ReadXml("temp.xml");            using (SqlConnection connTo = new SqlConnection(strConnTo))
                {
                    SqlCommand cmdTo = new SqlCommand("SELECT * FROM dbo.LoadTestBrowsers", connTo);
                    SqlDataAdapter adapterTo = new SqlDataAdapter(cmdTo);
                    SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapterTo);
                    adapterTo.RowUpdated += new SqlRowUpdatedEventHandler(adapterTo_RowUpdated);
                    intEffected = adapterTo.Update(dataSetTo);
                }            Console.WriteLine(intEffected);            Console.ReadKey();
            }        static void adapterTo_RowUpdated(object sender, SqlRowUpdatedEventArgs e)
            {
                if ( e.Errors != null && e.StatementType == StatementType.Insert)
                {
                    e.Status = UpdateStatus.SkipCurrentRow;
                    //Replace this part code to update this row maually
                }
            }
        }
      

  15.   

    ConnectionManager mConnectionManager
    mCommand = new OleDbCommand();
    mConnectionManager.Connect();
    mCommand = (OleDbCommand)mConnectionManager.Connection.CreateCommand();
      

  16.   

    给个参考,没有实现。建立两个ds,
    ds1连接到服务器A的A表,
    ds2连接到服务器B的A表,
    当ds1读取数据后,拷贝到ds2
    然后ds2执行更新。