主要是我想在A机器更改了数据库的信息,B机器用来显示的。。我不知道如何实现。。求具体方法。。希望不要只发个socket,或者TIME。。触发器上来。。
请问UDP SOCKET。。需要用到SQL的储存过程来触发吗?提交的网络广播指令怎样存储?
追答UDP是在客户端自己定义事件触发的,和存储过程没关系的。
比如你点了一个按钮,修改了数据库数据,修改完了之后,用UdpClinet对象网局域网里的某个端口广播一个指令,如"update".
其他机器的客户端程序启动的时候需要监听一下某端口,这样当A机器广播了一个指令之后,各个客户端就都会收到update这个指令,然后都去查询一下数据库更新一下显示结果就行了。
代码我现在没有,晚上回去我可以发上来给你看看。现在你可以去研究一下c# 的udpclient类
OK..非常感谢。。我下午都在看udpclient类。。觉得比较适合。。我等你哟。。
哈哈。。我测试的时候。发送指令测试无问题。。但是接收的界面死机。。而且不能够刷新。。
不好意思啊,昨晚回去一忙把这事给忘了...
接收端监控某个端口的代码是个死循环,必须要放在后台里,定义一个线程,线程里启动这个死循环,然后把线程放到后台里,好像是isbackground的属性设置,否则程序肯定要挂了。
此外在循环体里一旦接收到数据,就调用一个委托事件,这样才能对界面上的控件进行操作。否则会报错的,.net 2005以上的版本线程内是无法对外部控件直接操作的,只能用委托的方法。
private Thread messageAccectThread;
private void Form1_Load(object sender, EventArgs e)
{
BeginMessageAcceptor();
}
哈哈。。解决了。。非常感谢。。
呵呵。您的意思是否跟Timer差不多?B机器不知道A什么时候提交过数据,所以它不知道什么时候去后台刷新数据哟。。还不如手动刷新减轻数据库的负担。。对吧?
追答你的程序数据库访问量有多大? 没什么负担就这么来吧,还简单。
backgroundWorker_DoWork
while (true)
{
System.Threading.Thread.Sleep(5000);
//do
}
实在抱歉。。刚刚才从PHP转过来做C#有点菜。。我的程序是B机器打开程序之后就一直开着。。一直在监听数据库的变化从而更新显示的内容的。。。 backgroundWorker_DoWork 是在LOAD窗口的时候就开始循环后台刷新数据吗,当遇到变化才刷新界面,这样程序一直在后台操作会不会不好呢?如果要实现这种即时更新的效果,如果在A机器提交数据的时候向B机器发送触发数据是不是很麻烦?
追答那样是有socket的吧。很麻烦。应该你的B机器是客户单机,现在的机器性能,不要在乎这个后台程序。实际上咱们程序界面的时钟不也是后台1秒刷新一次么。没什么的。而且,后台丢出去的线程你也不用考虑别的比如稳定和性能什么的,这个微软也把类做好了。
C#拜求,局域网中A机器WINFORM程序更新了数据库的时候,B机器的WINFORM界 ...
如果你不希望用B机器去频繁的定时刷数据库的话,那我还是建议用UDP SOCKET来实现比较好,我之前做过一个活感觉跟你差不多。流程是这样的,一台机器负责对数据库操作,10多个客户端需要同步数据。后来我的做法是,A机器执行完了数据库操作后,用UDP的方式往局域网类广播一个指令;其他机器监听某个端口...
C#怎样连接局域网中另一个计算机的ACCESS数据库?
1.文件夹设置共享,数据库放里面!2.用B\/S结构,服务器搭建WebService,把数据层做在这里,客户端调用这个方法,返回数据出来!
...机子上用时,也要在相应的机子上建所需要的数据库吗?
这个是需要的了。另一个电脑也要安装数据库软件,如果你开发的软件是BS结构的,你就需要安装IIS了。关于数据库,你可以对原有机器的数据库进行分离,然后拷贝一份到另一台电脑上就可以了。
...的SQL数据库是在另外一台电脑上的,在公司局域网中另外一台电脑运行C#...
是的, 基本上是这样.不过在别的机器上面的话.这个 连接字符串, 可能需要修改一下 那个 SQLEXPRESS 前面, 应该加上一个 机器名字, 或者 ip 地址。否则 公司局域网中另外一台电脑运行C#程序的时候, 遇到 Server=.\\\\SQLEXPRESS 可能就会 认为这个数据库, 在他自己的那台机器上面,然后尝试访问,...
c#如何打开局域网共享文件夹中的文本文件,用winform窗体程序,不用...
首先确保有权限访问,然后最简单的方法就是建io流指向该网络文件的路径来打开读取
C# winform access 局域网访问
Winform用access 本来就不是很合理的,因为access同sql有些区别就是access最终连的数据库实际上是指定的物理数据库文件位置,这跟sql的映射地址数据库实例名称,有些区别的。1,那么使用access,若要能让客户端的机器都连接上你的机器,首先得保证,这些机器都能访问到你的这个mdb文件 2,若要都能访问到...
C#winform程序如何在一台电脑上访问另一台电脑上的数据库?
修改链接字符串,将其中的Server=源数据库IP 数据库所在的服务器上,在防火墙中,添加1433端口,允许tcp访问。
C#做的winform程序如何每隔n分钟访问一次数据库
void MainPro(){ Timer timer1=new Timer();\/\/声明一个timer控件 timer1.interval=n*1000;\/\/n代表秒数 timer1.tick+=new Timer1(timer1_tick);\/\/注册事件 timer1.start();\/\/启动计时器 } \/\/计时器代码 void timer1_tick(object sender,evenrArgs e){ \/\/在这里访问数据库,检查数据更新...
开发一个C#的WinForm程序,数据库服务器在公司内网192.168.1.106,怎么...
更改连接字符串并设置服务器上的数据库用户属性就行了 server = 192.168.1.106,1433;uid = (数据库用户名);pwd = (数据库密码);database = (数据库名);TimeOut=600;Persist Security Info=True";
C# WinForm通过外网连接数据库
那个是SQL Server数据库连接的默认端口。你可以先用telent 211.22.31.1 1433 假设对方的IP是211.22.31.1,这个是用来测试你能否连接到对方的1433端口上,如果能联入,说明两端的电脑的逻辑连接配置是对的,你程序写好IP就行了,否则要对方配置端口映射、和开启防火墙的配置。