📄 formtraffic.cs
字号:
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 + -