程序实现功能:
1.可以把一个数据库中所需要的记录 导入/导出 到另一个数据库中(access,oracle)。
2、实现查询本地access数据库,得到最新记录,然后和远程中心的oracle数据库上的记录对比,如果通过主关键字查询,有相同记录则修改成新记录,如果查询关键字没有该条记录则插入一条记录。
3、从中心机器上获取最新资讯刷新远端客户机上的access库。
由于涉及的表比较多,很多要执行的动作和过程又类似,想通过xml定义表和查询语句,来实现。实现一个公共类...如何实现?
4、由于网络带宽环境窄(几十k)所以没有考虑文件传输模式,而是采取
   1)直接读写oracle数据端口操作(oracle)数据库
   2)采用client-server结构,在服务器上架设webservice,负责中心库(oracle)的读写操作,接收远程传输程序client端的指令和表操作参数,做相应动作。xml定义表和查询语句在客户端程序...
   不知那个效率更高.....
http://dotnet.aspx.cc/article/0d99e5f2-92f7-4b3e-acc2-8b57ec8e25aa/read.aspx
//下面是用java实现插入的部分代码思路....
1 Eclipse 技术部 2500 
2 大峡 开发部 3000 
3 天一 技术部 5000 
4 船长 开发部 4000 
,主要就是新建一个类DataPass,由于本例要使用连接Oracle用的JDBC包,首先要导入对应的Oracle JDBC,以下是
DataPass.java的代码: 
package datamanage; import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.Statement; public class DataPass { public static void main(String[] args) { 
String serverName = "localhost"; 
try 

Class.forName("oracle.jdbc.driver.OracleDriver"); 
String url = "jdbc:oracle:thin:@"+serverName+":1521:eclipsedb"; 
Connection connOracle = DriverManager.getConnection(url,"eclipse","888888"); //连接源数据源 
Statement stmt = connOracle.createStatement(); 
ResultSet rs = stmt.executeQuery("select * from employee"); 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
Connection connAccess = DriverManager.getConnection("jdbc:odbc:target","",""); //连接目标数据源 
PreparedStatement pstmt = connAccess.prepareStatement("insert into employee(id,name,department,salary) values(?,?,?,?)"); 
//循环装入数据 
while(rs.next()) { 
pstmt.setInt(1,rs.getInt("id")); 
pstmt.setString(2,rs.getString("name")); 
pstmt.setString(3,rs.getString("department")); 
pstmt.setDouble(4,rs.getDouble("salary")); 
pstmt.executeUpdate(); 

//释放资源 
rs.close(); 
stmt.close(); 
pstmt.close(); 
connOracle.close(); 
connAccess.close(); 
}catch(Exception e){ 
e.printStackTrace(); 



; ///////////////////////////////////////////////////////////////////////////////////////////////
以下是c#webservice思路............................
///////////////////////////////////////////////////////////////////////////////////////////////
先在开始处引用.NET的类库: using System.Data.SqlClient;
using System.Data.OleDb;
然后更改类的名字为DataBaseWebService: public class DataBaseWebService : System.Web.Services.WebService
{
public DataBaseWebService()
{
//CODEGEN:该调用是 ASP.NET Web 服务设计器所必需的
InitializeComponent();
}
...
}
在Hello World方法的结尾处写上自己的方法代码,第一个方法SQLDB用来访问SQL Server数据库,它处理客户端发送的SQL Server查询,SQLDB的参数从浏览器地址栏传送的查询语句,所有的WebMethod方法的代码都有try/catch语句,用来处理查询失败时输出一些错误信息。如果WebMethod方法在运行时出现例外,catch语句产生一个数据集,是一个包含错误信息的Error表。SQLDB方法首先创建并打开SQL数据库连接,连接字符串在你的服务器上应当是唯一的,做为例子,我们使用Visual Studio .NET安装时自带的示例数据库;接下来,SQLDB方法创建SQL数据适配器,参数QUERY用来决定要返回的数据记录;最后产生查询结果的数据集,并一XML格式,并以Results为根节点的结果。代码如下:  [WebMethod]
  public DataSet SQLDB(string Query)
  {
    try
    {
      SqlConnection CS = new SqlConnection("server=(local)\\NetSDK;database=Northwind;Trusted_Connection=yes");
      SqlDataAdapter myCommand = new SqlDataAdapter (Query, CS);
      DataSet myDataSet = new DataSet();
      myCommand.Fill(myDataSet, "Results");
      return myDataSet;
    }
    catch(Exception ex)
    {
     return DataError(ex);
    }
  }用来查询ACCESS数据库的方法与SQL基本相同,为了大家测试方便,全部代码如下:  [WebMethod]
  public DataSet AccessDB(string Query)
  {
    try
    {
      string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
             + this.Server.MapPath("AccessWebServices.mdb");
      OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
      OleDbCommand myAccessCommand = new OleDbCommand(Query,myAccessConn);
      OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
      myAccessConn.Open();
      DataSet myDataSet = new DataSet();
      myDataAdapter.Fill(myDataSet,"Results");
      myAccessConn.Close();
      return myDataSet;
    }
    catch(Exception ex)
    {
      return DataError(ex);
    }
  }
最后写上处理错误的方法:  public DataSet DataError(Exception ex)
  {
    DataSet errDS = new DataSet("Errors");
    DataTable errTable = errDS.Tables.Add("Error");
    errTable.Columns.Add("Message");
    errTable.Rows.Add(new Object[] {ex.Message});
    return errDS;
  }

解决方案 »

  1.   

    不是很懂,学习一下
    个人拙见:不因该直接对ORACLE数据端口进行操作,如果ORACLE本身对数据进行操作,可能导致死锁。
      

  2.   

    目前我正在用c#开发一个数据迁移系统,由于对开发工具及资源熟悉不够,希望得到大家的帮助!作为回报;请跟贴的朋友留下电子邮件,我将把本次调研最后整理的相关技术资源和该系统文档全部提供给您.   
        
      系统功能要求如下:   
      1、将不同数据源的数据交换;目前要求access>>oracle,oracle>>access,excel>>oracle;   
      2、系统要求实现对源数据库多表进行连接组合后一个数据集合倒入到目标数据库中   
      3、系统提供对数据的基本处理,如字段合并、分拆、公式计算、类型转换;   
      4、系统允许对数据迁移过程中的问题确定错误处理逻辑(如记录重复时候选择修改还是跳过等)并实现实时;   
      5、控制系统具备定时功能,可以自动传输;   
      6、系统具备日志功能;对迁移、错误等信息作记录;   
        
      目前打算用c#开发;希望大家帮助共同解决以下问题:   
      1、数据迁移的解决模式有哪些?   
      2、目前有无较好的与此相关的开源项目?   
      3、上述问题的技术解决方法?   
      4、您建议使用何种开发平台?   
      5、c#种解决上述问题有无针对性技术?  
      

  3.   

    使用c#里面的反射机制
    正常思路是标准工程模式
    bll
    idal
    dal//在这里分别写各个数据库的处理类model
      

  4.   

    搜索一下"opendatasource"你会有发现的。