private void addSqlBtn_Click(object sender, EventArgs e)
        {
            sqlCreationWizard = new NewSqlPeerCreationWizard();

            if (sqlCreationWizard.ShowDialog(this) == DialogResult.OK)
            {
                string existingPeerName;
                if (IsDatabaseUsedByExistingPeer(sqlCreationWizard.ServerName, sqlCreationWizard.DatabaseName, out existingPeerName))
                {
                    MessageBox.Show(string.Format("The database [{0}] in server [{1}] is already used by sync peer [{2}]. Please pick a different database name instead.",
                                                  sqlCreationWizard.DatabaseName, sqlCreationWizard.ServerName, existingPeerName),
                                    "Error in creation SQL database", MessageBoxButtons.OK);
                    return;
                }

                SqlDatabase peer = new SqlDatabase();
                peer.ConnectionString       = sqlCreationWizard.PeerDbConnectionString;
                peer.MasterConnectionString = sqlCreationWizard.MasterConnectionString;
                peer.ServerName             = sqlCreationWizard.ServerName;
                peer.DBName = sqlCreationWizard.DatabaseName;

                try
                {
                    SynchronizationHelper.CheckAndCreateSQLDatabase(peer);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Error in creating SQL database", MessageBoxButtons.OK);
                    return;
                }

                //Provide our client a unique name
                peer.Name = SyncUtils.PeerNamePrefix + (peersMapping.Keys.Count + 2);

                //Add this client info to our mapping so it can be retrieved
                peersMapping.Add(peer.Name, peer);

                //Create a SqlCeSyncProvider for the new client that is being added
                SqlSyncProvider peerProvider = synchronizationHelper.ConfigureSqlSyncProvider(peer.Connection);

                providersCollection.Add(peer.Name, peerProvider);

                //Now add a new tab to the peer tabs
                TabPage tab = new TabPage(peer.Name);
                tab.Tag = peer;
                TablesViewControl control = new TablesViewControl(peer.Name);
                control.Name = "TablesViewCtrl";
                control.Dock = DockStyle.Fill;
                tab.Controls.Add(control);
                this.peerTabsControl.TabPages.Add(tab);

                //Add the client name to the list of providers available for synchronization
                this.srcProviderComboBox.Items.Add(peer.Name);
                this.destProviderComboBox.Items.Add(peer.Name);
                this.destProviderComboBox.SelectedIndex = destProviderComboBox.Items.Count - 1;

                this.synchronizeBtn.Enabled = this.providersCollection.Count > 1;
            }
        }
Esempio n. 2
0
        void EndAsyncReadTableValueFromConnection(IAsyncResult ar)
        {
            TablesViewControl tvc = ar.AsyncState as TablesViewControl;

            try
            {
                tvc.readTableValues.EndInvoke(ar);
            }
            catch (Exception e)
            {
                MessageBox.Show(string.Format("Unable to read table values for '{0}'. Check you connection string and retry. Error: {1}", tvc.name, e.ToString()));
            }
        }
Esempio n. 3
0
 private void RefreshTables(IDbConnection connection, TablesViewControl tableViewCtrl)
 {
     try
     {
         foreach (string s in SyncUtils.SyncAdapterTables)
         {
             tableViewCtrl.AsyncReadTableValueFromConnection(connection, s);
         }
     }
     catch (Exception exp)
     {
         MessageBox.Show(exp.Message, "Error in reading table values. Check Connection settings.");
     }
     Application.DoEvents();
 }
Esempio n. 4
0
        private void addCEBtn_Click(object sender, EventArgs e)
        {
            ceCreationWizard = new NewCEClientCreationWizard();
            //Create a new client
            CEDatabase client = new CEDatabase();

            if (ceCreationWizard.ShowDialog(this) == DialogResult.OK)
            {
                //Creation mode is based on the option the user picked in the new ce creation wizard
                client.CreationMode = (ceCreationWizard.fullInitRadioBtn.Checked) ? CEDatabaseCreationMode.FullInitialization : CEDatabaseCreationMode.SnapshotInitialization;

                //Database location is based on mode.
                switch (client.CreationMode)
                {
                case CEDatabaseCreationMode.FullInitialization:
                    client.Location = ceCreationWizard.fullInitDbLocation.Text;
                    try
                    {
                        SynchronizationHelper.CheckAndCreateCEDatabase(client);
                    }
                    catch (Exception e1)
                    {
                        MessageBox.Show(e1.ToString(), "Error in creating CE database", MessageBoxButtons.OK);
                        return;
                    }
                    break;

                case CEDatabaseCreationMode.SnapshotInitialization:
                    client.Location = ceCreationWizard.snapshotDestLocation.Text;

                    //Export the source SDF file first.
                    ExportClientDatabase(new SqlCeConnection("Data Source=\"" + ceCreationWizard.snapshotSrcLocation.Text + "\""), client.Location);

                    break;
                }
                //Provide our client a unique name
                client.Name = "Client " + (clientsMapping.Keys.Count + 1);

                //Add this client info to our mapping so it can be retrieved
                clientsMapping.Add(client.Name, client);

                //Create a SqlCeSyncProvider for the new client that is being added
                SqlCeSyncProvider clientProvider = synchronizationHelper.ConfigureCESyncProvider(client.Connection);

                providersCollection.Add(client.Name, clientProvider);

                //Now add a new tab to the peer tabs
                TabPage tab = new TabPage(client.Name);
                tab.Padding = new Padding(8);
                tab.Tag     = client;
                TablesViewControl control = new TablesViewControl(client.Name);
                control.Name = "TablesViewCtrl";
                control.Dock = DockStyle.Fill;
                tab.Controls.Add(control);
                this.peerTabsControl.TabPages.Add(tab);
                tab.BackColor = Color.Transparent;
                tab.UseVisualStyleBackColor = true;

                // Add the name of the file to the bottom
                Label labelFileName = new Label();
                labelFileName.Text    = "SqlCe Filename: " + ceCreationWizard.fullInitDbLocation.Text;
                labelFileName.Dock    = DockStyle.Bottom;
                labelFileName.Padding = new System.Windows.Forms.Padding(4);
                tab.Controls.Add(labelFileName);

                //Add the client name to the list of providers available for synchronization
                this.srcProviderComboBox.Items.Add(client.Name);
                this.destProviderComboBox.Items.Add(client.Name);
                this.destProviderComboBox.SelectedIndex = destProviderComboBox.Items.Count - 1;

                this.synchronizeBtn.Enabled = this.providersCollection.Count > 1;
            }
        }