0

このコードは、SQL サーバー テーブルへのアクセスからデータをコピーします。しかし、このコードにはいくつかの問題があります。

  1. このコードは、データがある SQL サーバー テーブルへのアクセスからデータをコピーできません。

私の SQL サーバー テーブルにはいくつかのデータがあり、アクセスから SQL サーバー テーブルの既存のデータの下にデータを追加したいと考えています。

既存のテーブルにデータを追加するにはどうすればよいですか?

  1. アクセス 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");
                }

            }
4

1 に答える 1

0

SQLBulkCopy は一括挿入のみを行うため、既存のデータは変更しないでください。

MS Access > 2003 の場合、JET の代わりに Microsoft ACE を使用する必要があります

于 2013-04-10T13:08:11.270 に答える