开发环境:win xp sp3 ,vs 2008,sql ce 3.0 sql 2000 sp4
using System;
using System.IO;
using System.Data.SqlServerCe;
using System.Data.SqlClient;
using SmartDeviceTest1.Data;
using System.Data;
using System.Windows.Forms;
namespace SmartDeviceTest1
{
public partial class FrmParkRda : Form
{
private string _localDbName = "RdaDb.sdf";
private string _localConnectionString = @"Data Source=RdaDb.sdf;Password=''";
private string _remoteDbName = "SmartDeviceTestDB";
private string _serverConnectString = "Data Source=192.168.74.84;Initial Catalog=SmartDeviceTestDB;User ID=sa;Provider=SQLOLEDB; Persist Security Info=True;";
private string _internetUrl = "http://192.168.74.84/SqlCeShare/sqlcesa30.dll";
private string _localTblName = "TBL_Park";
public SqlCeRemoteDataAccess _rda = null;
public FrmParkRda()
{
InitializeComponent();
}
//设置_rda
private void InitRDa()
{
_rda = new SqlCeRemoteDataAccess();
_rda.InternetUrl = _internetUrl;
_rda.LocalConnectionString = _localConnectionString;
}
//创建本地数据库
public void CreateLocalDB()
{
SqlCeEngine engine = new SqlCeEngine(_localConnectionString);
try
{
if (File.Exists(_localDbName))
File.Delete(_localDbName);
engine.CreateDatabase();
MessageBox.Show("创建成功");
}
catch (Exception ee)
{
// MessageBox.Show("创建失败");
MessageBox.Show(ee.Message);
}
finally
{
engine.Dispose();
}
}
//读取本地数据
protected DataTable GetLocalData()
{
DataSet ds = new DataSet();
SqlCeConnection con = new SqlCeConnection();
con.ConnectionString = _localConnectionString;
SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = con;
cmd.CommandText = "select * from " + _localTblName;
try
{
con.Open();
SqlCeDataAdapter adp = new SqlCeDataAdapter();
adp.SelectCommand = cmd;
adp.Fill(ds);
return ds.Tables[0];
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
return null;
}
finally
{
con.Dispose();
}
}
//读取服务器数据(这是直接连接服务器的模式,仅作为测试使用)
private DataTable GetServerData()
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection();
con.ConnectionString = PublicInfo.serverConStr;
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select * from TBL_Park";
try
{
con.Open();
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = cmd;
adp.Fill(ds);
return ds.Tables[0];
}
catch (Exception ee)
{
MessageBox.Show("读取服务器信息失败!");
MessageBox.Show(ee.Message);
return null;
}
finally
{
con.Dispose();
}
}
//执行创建本地数据库
private void menuItem2_Click(object sender, EventArgs e)
{
dg1.DataSource = null;
CreateLocalDB();
}
//从服务器上获取最新的数据到本地表(如果存在本地表,先删除本地表)
private void menuItem3_Click(object sender, EventArgs e)
{
InitRDa();
SqlCeConnection con = new SqlCeConnection();
con.ConnectionString = _localConnectionString;
SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = con;
//cmd.CommandText = "if exists(select 1 from sysobjects where name = 'TBL_Park') drop table TBL_Park";
try
{
con.Open();
cmd.CommandText = "select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'TBL_Park' ";
if (cmd.ExecuteScalar() != null)
{
cmd.CommandText = "drop table TBL_Park";
cmd.ExecuteNonQuery();
}
//执行存储过程HV_QueryParks 返回一个本地“视图”。
_rda.Pull(_localTblName, " exec HV_QueryParks 2 ", _serverConnectString, RdaTrackOption.TrackingOn);
MessageBox.Show("同步下载成功");
}
catch (Exception ee)
{
con.Dispose();
MessageBox.Show(ee.Message);
}
}
//绑定本地数据到datagrid1
private void menuItem4_Click(object sender, EventArgs e)
{
dg1.DataSource = GetLocalData();
}
//绑定服务器数据到datagrid2
private void menuItem5_Click(object sender, EventArgs e)
{
dg2.DataSource = GetServerData();
}
//在本地插入数据
private void menuItem6_Click(object sender, EventArgs e)
{
FrmAddPark fm = new FrmAddPark();
fm.ShowDialog();
if (fm.DialogResult == DialogResult.Yes)
{
SqlCeConnection con = new SqlCeConnection();
con.ConnectionString = _localConnectionString;
SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = con;
cmd.CommandText = " insert into TBL_Park(ParkID,CityID,Park) values('" + fm.ParkId.ToString() + "',2, '" + fm.ParkName + "')";
try
{
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("插入成功!");
}
catch (Exception ee)
{
con.Dispose();
MessageBox.Show(ee.Message);
}
}
}
//修改本地数据
private void menuItem7_Click(object sender, EventArgs e)
{
MessageBox.Show("请双击DataGrid要修改的行");
}
//修改本地数据
private void dg1_DoubleClick(object sender, EventArgs e)
{
if (dg1.VisibleRowCount > 0)
{
FrmAddPark fm = new FrmAddPark();
fm.textBox1.Text = dg1[dg1.CurrentRowIndex, 0].ToString();
fm.textBox1.ReadOnly = true;
fm.textBox2.Text = dg1[dg1.CurrentRowIndex, 2].ToString();
fm.ShowDialog();
if (fm.DialogResult == DialogResult.Yes)
{
SqlCeConnection con = new SqlCeConnection();
con.ConnectionString = _localConnectionString;
SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = con;
cmd.CommandText = " update TBL_Park set Park ='" + fm.ParkName + "' where ParkID = " + fm.ParkId;
try
{
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("修改成功!");
//dg1.DataSource = GetLocalData();
}
catch (Exception ee)
{
con.Dispose();
MessageBox.Show(ee.Message);
}
}
}
}
//删除本地数据
private void menuItem8_Click(object sender, EventArgs e)
{
if (dg1.VisibleRowCount > 0)
{
SqlCeConnection con = new SqlCeConnection();
con.ConnectionString = _localConnectionString;
SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = con;
cmd.CommandText = " delete from TBL_Park where parkId= '" + dg1[dg1.CurrentRowIndex, 0].ToString() + "'";
try
{
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("删除成功!");
//dg1.DataSource = GetLocalData();
}
catch (Exception ee)
{
con.Dispose();
MessageBox.Show(ee.Message);
}
}
}
//向服务器提交本地数据
private void menuItem9_Click(object sender, EventArgs e)
{
InitRDa();
try
{
_rda.Push(_localTblName, _serverConnectString, RdaBatchOption.BatchingOn);
MessageBox.Show("同步上传成功");
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}
//直接添加到服务器数据(调用rda的SubmitSql方法,执行服务器上的存储过程,在服务器的表中插入数据)
private void menuItem15_Click(object sender, EventArgs e)
{
InitRDa();
try
{
_rda.SubmitSql("exec HV_SavePark '直发', 2 ,1", _serverConnectString);
MessageBox.Show("向服务器发送数据成功");
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}
}
}