⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formtraffic.cs

📁 清华大学出版社出版的 移动应用开发宝典 张大威(2008)的附书源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
            this.dataGridTableStyle1.MappingName = "Cars";
            // 
            // dataGridTextBoxColumn1
            // 
            this.dataGridTextBoxColumn1.Format = "";
            this.dataGridTextBoxColumn1.FormatInfo = null;
            this.dataGridTextBoxColumn1.HeaderText = "ID";
            this.dataGridTextBoxColumn1.MappingName = "CarID";
            this.dataGridTextBoxColumn1.PropertyDescriptor = null;
            this.dataGridTextBoxColumn1.Width = 30;
            // 
            // dataGridTextBoxColumn2
            // 
            this.dataGridTextBoxColumn2.Format = "";
            this.dataGridTextBoxColumn2.FormatInfo = null;
            this.dataGridTextBoxColumn2.HeaderText = "Reg";
            this.dataGridTextBoxColumn2.MappingName = "Reg";
            this.dataGridTextBoxColumn2.PropertyDescriptor = null;
            this.dataGridTextBoxColumn2.Width = 80;
            // 
            // dataGridTextBoxColumn3
            // 
            this.dataGridTextBoxColumn3.Format = "";
            this.dataGridTextBoxColumn3.FormatInfo = null;
            this.dataGridTextBoxColumn3.HeaderText = "Location";
            this.dataGridTextBoxColumn3.MappingName = "Location";
            this.dataGridTextBoxColumn3.PropertyDescriptor = null;
            this.dataGridTextBoxColumn3.Width = 200;
            // 
            // FormTraffic
            // 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
            this.ClientSize = new System.Drawing.Size(240, 295);
            this.Controls.Add(this.tabControl2);
            this.MinimizeBox = false;
            this.Name = "FormTraffic";
            this.Text = "Using RDA";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.tabControl2.ResumeLayout(false);
            this.tabPage5.ResumeLayout(false);
            this.tabPage7.ResumeLayout(false);
            this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// The main entry point for the application.
		/// </summary>

		static void Main() 
		{
			Application.Run(new FormTraffic());
		}

		private void Form1_Load(object sender, System.EventArgs e)
		{
			RDAPull();
        }

		private void DisplaySQLCEErrors(SqlCeException ex)
		{
			for (int i=0; i < ex.Errors.Count; i++)
			{
				MessageBox.Show("Index #" + i.ToString() + "\n" 
					+ ex.Errors[i].Source + "\n"
					+ "Error: " + ex.Errors[i].Message,		
					"Error No. " + ex.Errors[i].NativeError.ToString());
			}
		}
		

        private void RDAPull()
        {
            // First ensure we have an empty local SQL CE database
            CreateEmptyDatabase();

            using (SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess())
            {
                string sCon = @"Provider=SQLOLEDB;Data Source=CL1MBING;"
                    + @"Initial Catalog=Traffic;"
                    + @"integrated security=SSPI;Persist Security Info=False";

                rda.InternetUrl = @"http://CL1MBING/TrafficRDA/sqlcesa30.dll";
                rda.LocalConnectionString = @"Data Source=\My Documents\TrafficRDA.sdf";
                rda.InternetLogin = @"CL1MBING\RDAUser";
                rda.InternetPassword = "P@ssw0rd";
                try
                {
                    rda.Pull("Cars", "SELECT CarID,Reg,Location FROM Cars",
                        sCon, RdaTrackOption.TrackingOnWithIndexes, "rdaCarErrors");
                }
                catch (SqlCeException sqlCeEx)
                {
                    DisplaySQLCEErrors(sqlCeEx);
                }
                try
                {
                    rda.Pull("Obs", "SELECT ObsID,CarID,ObsDateTime,ObsNote FROM Obs",
                        sCon, RdaTrackOption.TrackingOn, "rdaObsErrors");
                }
                catch (SqlCeException sqlCeEx)
                {
                    DisplaySQLCEErrors(sqlCeEx);
                }
            }

            MessageBox.Show("RDA Pull Done!");

            SetupUIDataBinding();
        }

        private void SetupUIDataBinding()
        {
            // Initialize the DataSet used for maintaining records in the UI
            carsDataSet = new DataSet();
            carsAdapter.Fill(carsDataSet, "Cars");

            // Workaround for tables with Identity columns - you cannot use RDA to sync tables with Identity columns
            // so instead configure the column in the DataTable - effectively implement Identity column behaviour
            // outside the database
            this.carsDataSet.Tables["Cars"].Columns["CarID"].AutoIncrement = true;
            this.carsDataSet.Tables["Cars"].Columns["CarID"].AutoIncrementStep = 1;

            //Get current highest value in that column
            carsConnection.Open();
            int MaxCarID = -1;
            using (SqlCeCommand cmd = new SqlCeCommand(
                "SELECT MAX(CarID) FROM Cars", carsConnection))
            {
                object result = cmd.ExecuteScalar();
                if (!(result is DBNull))
                    MaxCarID = Convert.ToInt32(result);
            }
            carsConnection.Close();
            // Set the AutoIncrement seed accordingly
            this.carsDataSet.Tables["Cars"].Columns["CarID"].AutoIncrementSeed = MaxCarID + 1;

            // Initialize the data binding to the DataGrid
            this.bindingSource1.DataSource = carsDataSet;
            this.bindingSource1.DataMember = "Cars";
        }

        
 		private void SubmitSQLRDA()
		{
            using (SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess())
            {
                string sCon = @"Provider=SQLOLEDB;Data Source=CL1MBING;"
                    + @"Initial Catalog=Traffic;"
                    + @"integrated security=SSPI;Persist Security Info=False";

                rda.InternetUrl = @"http://CL1MBING/TrafficRDA/sqlcesa30.dll";
                rda.LocalConnectionString = @"Data Source=\My Documents\TrafficRDA.sdf";
                rda.InternetLogin = @"CL1MBING\RDAUser";
                rda.InternetPassword = "P@ssw0rd";
                try
                {
                    rda.SubmitSql("UPDATE Cars SET Archive = 1", sCon);
                }
                catch (SqlCeException ex)
                {
                    DisplaySQLCEErrors(ex);
                }
            }
		}

		private void RDAPush()
		{
            // Write changes back to the SQL CE database
            this.bindingSource1.EndEdit();
            carsAdapter.Update(carsDataSet, "Cars");

            using (SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess())
            {
                string sCon = @"Provider=SQLOLEDB;Data Source=CL1MBING;"
                    + @"Initial Catalog=Traffic;"
                    + @"integrated security=SSPI;Persist Security Info=False";

                rda.InternetUrl = @"http://CL1MBING/TrafficRDA/sqlcesa30.dll";
                rda.LocalConnectionString = @"Data Source=\My Documents\TrafficRDA.sdf";
                rda.InternetLogin = @"CL1MBING\RDAUser";
                rda.InternetPassword = "P@ssw0rd";
                try
                {
                    rda.Push("Cars", sCon);
                }
                catch (SqlCeException sqlCeEx)
                {
                    DisplaySQLCEErrors(sqlCeEx);
                }
            }	

			MessageBox.Show("RDA Push Done!");
		}

		private void buttonAddCar_Click(object sender, System.EventArgs e)
		{
            this.carsDataSet.Tables["Cars"].Rows.Add(new object[] {null, this.textBoxReg.Text, this.textBoxLocation.Text});
		}

		private void buttonPush_Click(object sender, System.EventArgs e)
		{
			RDAPush();
		}

        private void CreateEmptyDatabase()
        {
            //create the database
            if (!System.IO.File.Exists(@"\My Documents\TrafficRDA.sdf"))
            {
                SqlCeEngine eng = new SqlCeEngine(@"Data Source=\My Documents\TrafficRDA.sdf");
                eng.CreateDatabase();
            }

            //clear out old table
            using (SqlCeConnection cn = new SqlCeConnection(@"Data Source=\My Documents\TrafficRDA.sdf"))
            {
                cn.Open();
                try
                {
                    try
                    {
                        using (SqlCeCommand cmd = new SqlCeCommand("DROP TABLE Cars", cn))
                        {
                            cmd.ExecuteNonQuery();
                        }
                    }
                    catch (SqlCeException sqlCeEx)
                    {
                        if (sqlCeEx.HResult != -2147217865) // Table does not exist
                            DisplaySQLCEErrors(sqlCeEx);
                    }
                    try
                    {
                        using (SqlCeCommand cmd = new SqlCeCommand("DROP TABLE Obs", cn))
                        {
                            cmd.ExecuteNonQuery();
                        }
                    }
                    catch (SqlCeException sqlCeEx)
                    {
                        if (sqlCeEx.HResult != -2147217865) // Table does not exist
                            DisplaySQLCEErrors(sqlCeEx);
                    }
                    try
                    {
                        using (SqlCeCommand cmd = new SqlCeCommand("DROP TABLE rdaCarErrors", cn))
                        {
                            cmd.ExecuteNonQuery();
                        }
                    }
                    catch (SqlCeException sqlCeEx)
                    {
                        if (sqlCeEx.HResult != -2147217865) // Table does not exist
                            DisplaySQLCEErrors(sqlCeEx);
                    }
                    try
                    {
                        using (SqlCeCommand cmd = new SqlCeCommand("DROP TABLE rdaObsErrors", cn))
                        {
                            cmd.ExecuteNonQuery();
                        }
                    }
                    catch (SqlCeException sqlCeEx)
                    {
                        if (sqlCeEx.HResult != -2147217865) // Table does not exist
                            DisplaySQLCEErrors(sqlCeEx);
                    }
                }
                finally
                {
                    cn.Close();
                }
            }
        }

        private void textBoxReg_TextChanged(object sender, EventArgs e)
        {
            this.buttonAddCar.Enabled = true;
        }

        private void dataGrid1_CurrentCellChanged(object sender, EventArgs e)
        {
            m_CurrentCarID = (int)((DataRowView)this.bindingSource1.Current).Row["CarID"];
            this.labelReg.Text = (string)((DataRowView)this.bindingSource1.Current).Row["Reg"];
            FillObsList();
        }

        private void FillObsList()
        {
            //connect to the local database
            using (SqlCeConnection cn = new SqlCeConnection(@"Data Source=\My Documents\TrafficRDA.sdf"))
            {
                //initialise commands for Obs
                using (SqlCeCommand cmdObsForCarID = new SqlCeCommand(
                    "SELECT ObsID, ObsDateTime, ObsNote FROM Obs WHERE CarID = ? ORDER BY ObsDateTime", cn))
                {
                    cmdObsForCarID.Connection.Open();
                    try
                    {
                        cmdObsForCarID.Parameters.Add("CarID", SqlDbType.Int);
                        cmdObsForCarID.Parameters[0].Value = m_CurrentCarID;
                        using (SqlCeDataReader rdr = cmdObsForCarID.ExecuteReader(CommandBehavior.Default))
                        {
                            ListViewItem item;
                            while (rdr.Read())
                            {
                                item = new ListViewItem(rdr.GetInt32(0).ToString());
                                item.SubItems.Add(
                                    rdr.GetDateTime(1).ToShortDateString() + " " +
                                    rdr.GetDateTime(1).ToShortTimeString());
                                item.SubItems.Add(rdr.GetString(2));
                                listViewObs.Items.Add(item);
                            }
                            rdr.Close();
                        }
                    }
                    finally
                    {
                        cmdObsForCarID.Connection.Close();
                    }
                }
            }
        }
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -