日期:2014-05-18  浏览次数:20466 次

用C#代码实现,读取Access数据放到SQlserver中
1.Access数据库与SqlServer数据库表结构一样。而且目前两边的数据一模一样
 客户对Access中的某个表某条数据进行了修改或增加或删除
2.对已经修改或增加的数据,更新到对应的Sqlserver对应表里面,同样SQL中,修改新增的数据也要同步到Access中
  其实就是Access与SQl同步,用C#代码实现,看了很多资料都不符合我的需求

我现在的想法是:
  
把Access中符合条件的数据读取出来放到Dataset中;再从Dataset数据集中添加(修改)到SQL中,不知道是否可行。
用代码怎样实现比较好呢?各位出出主意,最好有代码参考

------解决方案--------------------
可以在SQL中用链接服务器直接从ACCESS里读出数据,并加以比较的.
如果是新插入的,可以:
SQL code
exec sp_addlinkedserver 'sample','','Microsoft.Jet.OLEDB.4.0','d:\db1.mdb','','','db1'
go
insert into tb select * from sample...tb a where not exists(select 1 from tb where id=a.id)
go
exec sp_dropserver 'sample','droplogins'

------解决方案--------------------
SQL code
Transact-SQL语句进行导入导出:

1.在SQL SERVER里查询access数据:
-- ======================================================
SELECT * 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名

select *  from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source="D:\db.mdb";User ID=Admin;Password=')...Student where name = '我'
select * from newTable
-------------------------------------------------------------
2.将access导入SQL server 
-- ======================================================
在SQL SERVER 里运行:
SELECT *
INTO newtable
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 
      'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
-------------------------------------------------------------
3.将SQL SERVER表里的数据插入到Access表中
-- ======================================================
在SQL SERVER 里运行:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名 
(列名1,列名2)
select 列名1,列名2  from  sql表

实例:
insert into  OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
   'C:\db.mdb';'admin';'', Test) 
select id,name from Test
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
SELECT *
FROM sqltablename


insert into  OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:\db.mdb";User ID=Admin;Password=')...Student(studentid,name) select staffid,name from staff
insert into  OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
   'D:\db.mdb';'admin';'', Student) 
select accountid,name from tblbaccount

select * from openrowset('Microsoft.Jet.OLEDB.4.0','D:\db.mdb';'admin';'',Student)
-------------------------------------------------------------

------解决方案--------------------
可不可以这样考虑:
系统在增加、修改或删除时同时对SQL与ACCESS作同步处理