c# winform做总分店数据传输问题~

coosiu 2010-11-02 09:22:57
比如有 总店 A 和2个分店 B和C


只想在每天早上的8点和晚上的5点 进行一次数据的下载和 上传 (环境: 2Madsl线路,sql 2005数据库)


请问 各位朋友在遇到类似问题的时候 是如何进行 数据上传下载的??


比如 下载 是先把表里数据查出一个DataTable 然后循环的再插入到分店机器上吗?? 然后这个方法用事务控制好??

寻求 最简便,快速的方法 ,先谢谢看帖并参与回帖的各位..
...全文
282 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
coosiu 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mengyangchao 的回复:]

在服务端的数据表里加个字段表示传输与否
每次传一条把这个字段置为'1'
只要不停的取第一条该字段不为'1'的进行传输就行了(直到找不到该字段为'1'的记录为止)
[/Quote]

楼上的方法比较好 ,其实我主要是想问 你们是怎么传输数据的 , 是像我上面说的那样 用dataTable那样的嘛??
红帽小小 2010-11-02
  • 打赏
  • 举报
回复
在服务端的数据表里加个字段表示传输与否
每次传一条把这个字段置为'1'
只要不停的取第一条该字段不为'1'的进行传输就行了(直到找不到该字段为'1'的记录为止)
coosiu 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 syluoping 的回复:]

还是用程序做比较好,后台压力太大。定时更新插入数据就可以了。
[/Quote]

能说的再明白些吗?
coosiu 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhgroup 的回复:]

用应用程序,在总店设置WEBSERVICE,分店通过WEBSERVICE读取数据,
至于读取数据,可以每读取指定数量(比如100条),分批次读取
[/Quote]

想全部功能用C/S实现 不用B/S的东西..
zhgroup 2010-11-02
  • 打赏
  • 举报
回复
用应用程序,在总店设置WEBSERVICE,分店通过WEBSERVICE读取数据,
至于读取数据,可以每读取指定数量(比如100条),分批次读取
syluoping 2010-11-02
  • 打赏
  • 举报
回复
还是用程序做比较好,后台压力太大。定时更新插入数据就可以了。
wuhuabucai 2010-11-02
  • 打赏
  • 举报
回复
sql 数据同步
dodducs 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 coosiu 的回复:]

引用 3 楼 zhgroup 的回复:

用应用程序,在总店设置WEBSERVICE,分店通过WEBSERVICE读取数据,
至于读取数据,可以每读取指定数量(比如100条),分批次读取


想全部功能用C/S实现 不用B/S的东西..
[/Quote]


WebService 和B/S有什么必然的联系么?
WebService是给你留一个互通的接口而已,,而且这样 压力都在IIS上 不在SQL上 可以解决免费用户多并发的问题不也很好么? 或者你可以通过WebService来进行限制,每次只同时最多几个店同时上传 这都是可以实现的,,,难道WebService有什么问题么? 这是一个很好的建议
dodducs 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 coosiu 的回复:]

引用 9 楼 mengyangchao 的回复:

我一直都是取数据存到 DataTable 里面
然后再执行 insert 语句


哦 你刚说的方法是 1对1 的情况下, 如果是1对多的情况下呢 ?? 你把那一列由0改成1了 那别的分店就无法下载了啊呵呵
[/Quote]


反正店少,,那就用 00 表示 第一个代表 B 第二个代表C
B更新了变成 10 C更新了变成 01 都更新 变成11不就完了

状态的东西比较抽象 看你怎么理解了
kmy001 2010-11-02
  • 打赏
  • 举报
回复
select * into 分店.tb1 from
FROM OPENROWSET('SQLOLEDB','总店';'sa';'MyPass',
'SELECT * FROM 分店.tb1) AS a
where a.id not in(select id from 分店.tb1)

不好意思啊应该把红字改成总店
kmy001 2010-11-02
  • 打赏
  • 举报
回复
A. 将 OPENROWSET 与 SELECT 语句及用于 SQL Server 的 Microsoft OLE DB 提供程序一起使用
下面的示例使用用于 SQL Server 的 Microsoft OLE DB 提供程序访问 pubs 数据库中的 authors 表,该数据库在一个名为 seattle1 的远程服务器上。从 datasource、user_id 及 password 中初始化提供程序,并且使用 SELECT 语句定义返回的行集。

USE pubs
GO
SELECT a.*
FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',
'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a
GO

可以参照这个
coosiu 2010-11-02
  • 打赏
  • 举报
回复
楼上的朋友用的access呀?? 等我试一下..
kmy001 2010-11-02
  • 打赏
  • 举报
回复
LinkServer的资料没有找到
先用下openrowset吧
这样一条sql语句就能实现楼主的要求了!


select * into 分店.tb1 from
FROM OPENROWSET('SQLOLEDB','总店';'sa';'MyPass',
'SELECT * FROM 分店.tb1) AS a
where a.id not in(select id from 分店.tb1)

kmy001 2010-11-02
  • 打赏
  • 举报
回复
最好使用LinkServer,OpenRowSet()很容易被人知道密码与帐号了...


OPENROWSET
包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。

语法
OPENROWSET ( 'provider_name'
, { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog.] [ schema.] object
| 'query' }
)

参数
'provider_name'

字符串,它代表在注册表中指定的 OLE DB 提供程序的友好名。provider_name 没有默认值。

'datasource'

字符串常量,它对应着某个特定的 OLE DB 数据源。datasource 是将被传递到提供程序 IDBProperties 接口以初始化提供程序的 DBPROP_INIT_DATASOURCE 属性。通常,这个字符串包含数据库文件的名称、数据库服务器的名称,或者提供程序能理解的用于查找数据库的名称。

'user_id'

字符串常量,它是传递到指定 OLE DB 提供程序的用户名。user_id 为连接指定安全上下文,并将它作为 DBPROP_AUTH_USERID 属性传递进来以初始化提供程序。

'password'

字符串常量,它是将被传递到 OLE DB 提供程序的用户密码。当初始化提供程序时,将 password 作为 DBPROP_AUTH_PASSWORD 属性传递进来。

'provider_string'

提供程序特定的连接字符串,将它作为 DBPROP_INIT_PROVIDERSTRING 属性传递进来以初始化 OLE DB 提供程序。通常 provider_string 封装初始化提供程序所需的所有连接信息。

catalog

目录或数据库的名称,其中驻留着指定的对象。

schema

架构的名称或指定对象的对象所有者名称。

object

对象名称,它唯一地标识出将要操作的对象。

'query'

是字符串常量,发送到提供程序并由提供程序执行。Microsoft® SQL Server™ 不处理该查询,但处理由提供程序返回的查询结果(直接传递查询)。对于有些提供程序,它们并没有通过表名而是通过命令语言表现自己的表格格式数据,那么将直接传递查询用于这些提供程序是非常有用的。只要查询提供程序支持 OLE DB Command 对象及其强制接口,那么在远程服务器上就支持直接传递查询。有关更多信息,请参见 SQL Server OLE DB 程序员参考。

注释
如果 OLE DB 提供程序在指定的数据源中支持多个目录和架构,那么就需要目录及架构名称。如果 OLE DB 提供程序并不支持目录和架构,那么可以省略 catalog 及 schema 的值。

如果提供程序只支持架构名,那么必须指定一个两部分名称,形式为 schema.object。如果提供程序只支持目录名,那么必须指定一个三部分名称,形式为 catalog.schema.object。

OPENROWSET 不接受参数变量。

权限
OPENROWSET 权限由传递到 OLE DB 提供程序的用户名的权限确定。

示例
A. 将 OPENROWSET 与 SELECT 语句及用于 SQL Server 的 Microsoft OLE DB 提供程序一起使用
下面的示例使用用于 SQL Server 的 Microsoft OLE DB 提供程序访问 pubs 数据库中的 authors 表,该数据库在一个名为 seattle1 的远程服务器上。从 datasource、user_id 及 password 中初始化提供程序,并且使用 SELECT 语句定义返回的行集。

USE pubs
GO
SELECT a.*
FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',
'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a
GO

B. 将 OPENROWSET 与对象及用于 ODBC 的 OLE DB 提供程序一起使用
下面的示例使用用于 ODBC 的 OLE DB 提供程序以及 SQL Server ODBC 驱动程序访问 pubs 数据库中的 authors 表,该数据库在一个名为 seattle1 的远程服务器中。提供程序用在 ODBC 提供程序所用的 ODBC 语法中指定的 provider_string 进行初始化,定义返回的行集时使用 catalog.schema.object 语法。

USE pubs
GO
SELECT a.*
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
pubs.dbo.authors) AS a
ORDER BY a.au_lname, a.au_fname
GO

C. 使用用于 Jet 的 Microsoft OLE DB 提供程序
下面的示例通过用于 Jet 的 Microsoft OLE DB 提供程序访问 Microsoft Access Northwind 数据库中的 orders 表。



说明 下面的示例假定已经安装了 Access。


USE pubs
GO
SELECT a.*
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)
AS a
GO

D. 使用 OPENROWSET 和 INNER JOIN 中的另一个表
下面的示例从本地 SQL Server Northwind 数据库的 customers 表中,以及存储在相同计算机上 Access Northwind 数据库的 orders 表中选择所有数据



说明 下面的示例假定已经安装了 Access。


USE pubs
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c INNER JOIN
OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)
AS o
ON c.CustomerID = o.CustomerID
GO
grzx2210 2010-11-02
  • 打赏
  • 举报
回复
最好从开进程。windows服务
coosiu 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mengyangchao 的回复:]

我一直都是取数据存到 DataTable 里面
然后再执行 insert 语句
[/Quote]

哦 你刚说的方法是 1对1 的情况下, 如果是1对多的情况下呢 ?? 你把那一列由0改成1了 那别的分店就无法下载了啊呵呵
红帽小小 2010-11-02
  • 打赏
  • 举报
回复
我一直都是取数据存到 DataTable 里面
然后再执行 insert 语句

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧