2013-04-10 78 views
0

該代碼將數據從訪問複製到SQL服務器表。 但這段代碼有一些問題。將數據從訪問複製到現有的SQL Server表

  1. 此代碼無法將數據從訪問權限複製到SQL服務器表所在的數據。

我的SQL服務器表有一些數據,我想從訪問中添加數據到SQL服務器表中的現有數據。

如何將數據添加到現有表中?

  • 無法從Access 2007年或2010年
  • 讀取數據如何從訪問讀取數據2007/2010

    OpenFileDialog openfiledialog1 = new OpenFileDialog(); 
         openfiledialog1.Title = "select access file"; 
    
          openfiledialog1.Filter = "Access 2003 (*.mdb)|*.mdb|Access 2007|*.accdb"; 
          if (openfiledialog1.ShowDialog() == DialogResult.OK) 
          { 
    
           string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + openfiledialog1.FileName; 
           const string connectionStringDest = @"server=ahmad-pc\anfd;database = phonebook;Integrated Security = true"; 
           using (var sourceConnection = new OleDbConnection(connectionString)) 
           { 
            sourceConnection.Open(); 
    
            var commandSourceData = new OleDbCommand("SELECT * from numberperson", sourceConnection); 
            var reader = commandSourceData.ExecuteReader(); 
    
            using (var destinationConnection = new SqlConnection(connectionStringDest)) 
            { 
             destinationConnection.Open(); 
    
             using (var bulkCopy = new SqlBulkCopy(destinationConnection)) 
             { 
    
    
              bulkCopy.ColumnMappings.Add("name", "nameperson"); //THIS A MAPPING REPLACE IT WITH YOUR NEED 
              bulkCopy.ColumnMappings.Add("family", "family1"); 
              bulkCopy.DestinationTableName = "profile2"; 
    
              try 
              { 
               bulkCopy.WriteToServer(reader); 
              } 
              catch (Exception ex) 
              { 
               Console.WriteLine(ex.Message); 
              } 
              finally 
              { 
               reader.Close(); 
              } 
             } 
            } 
            MessageBox.Show("success"); 
           } 
    
          } 
    
    +0

    你應該基於文件的MS-Access版本更改連接字符串。這裏是2007年:http://www.connectionstrings.com/access-2007 – kschieck 2013-04-10 13:07:13

    回答

    0

    SqlBulkCopy的只做批量插入,所以任何現有的數據不應該被修改。

    的MS Access> 2003,您需要使用Microsoft ACE,而不是JET

    +0

    我應該使用什麼函數,而不是SQLBulkCopy? – anfd 2013-04-10 13:57:55

    +0

    @anfd我不認爲大容量副本會刪除任何數據,因此使用它應該沒問題。 – 2013-04-10 14:10:11

    相關問題