ado.net-C#中多个程序(线程)读写数据库的问题。

问题描述

C#中多个程序(线程)读写数据库的问题。

比如说我在程序A中进行修改数据库。
namespace A
{
class program
{
static void Main(string[] args)
{
DbConnection conn = new DbConnetion(...);
conn.Open();
DbCommand comm = new DbCommand("Insert into myTable (...) values (...)",conn);
comm.ExecuteNonquery();
conn.Close();
}
}
}
在程序B中读取数据库:
namespace B
{
class program
{
static void Main(string[] args)
{
DbConnection conn = new DbConnetion(同一个数据库);
conn.Open();
DbCommand comm = new DbCommand("Select * from MyTable",conn);
DbReader reader = comm.ExecuteRead();
while(reader.Read())
{
...
}
conn.Close();
}
}
}
那么我应该如何修改两个程序,使之能判断数据库的状态,从而推迟操作,当数据库闲置
时,再操作呢?

解决方案

这个看你需要完成什么样的效果 如果你不怕数据库中的脏读的话
在B中用Select * from MyTable(nolock)
如果你需要判断A中是否插入了数据 可以在B中先判断 然后再执行查询

解决方案二:

进程间的同步机制,是需要用到的。

时间: 2024-10-31 16:55:12

ado.net-C#中多个程序(线程)读写数据库的问题。的相关文章

如何“干净地”终止Win32中的应用程序

摘要 在理想环境中,某一进程可能会通过某种形式的进程间通信要求另一进程关闭.不过,如果你对希望其关闭的应用程序没有源代码级控制权,可能就没有办法做这样的选择.尽管没有哪种方法能保证"干净地"关闭 Win32 中的应用程序,但你可以采取一些步骤来确保应用程序使用最佳方法清除资源. 32 位进程(和 Windows 95 下的 16 位进程) 在 Win32 下,操作系统可保证在进程关闭时清除进程所拥有的资源.但是,这并不意味着进程本身将有机会对磁盘执行任何最后的信息刷新或通过远程连接执行

Android中的进程和线程

进程和线程是现代网络操作系统的核心概念.Android作为一种优秀的.承袭Linux的移动操作系统,其进程和线程的概念是开发者和安全工作人员需要深入了解的问题.本文将详细介绍Android中的进程.线程以及相关的技术问题. 进程和线程的基本概念 当一个应用程序开始运行它的第一个组件时,Android会为它启动一个Linux进程,并在其中执行一个单一的线程.默认情况下,应用程序所有的组件均在这个进程的这个线程中运行.然而,你也可以安排组件在其他进程中运行,而且可以为任意进程衍生出其它线程. And

举例详解Lua中的协同程序编程

这篇文章主要介绍了Lua中的协同程序编程,是Lua入门学习中的基础知识,需要的朋友可以参考下 协同程序是协同的性质,可以把两个或更多的方法以可控制的方式执行.随着协同程序,在任何给定的时间,只有其协同程序运行之一,这在运行协同程序只能暂停其执行时,明确要求暂停. 上述定义可能看起来模糊.来告诉它更清楚,假设我们有两个方法,一个主程序方法和协同程序.当我们使用恢复功能调用协程,其开始执行,当我们调用yield功能,暂停执行.再次同协程可以继续从它被暂停的另一个恢复功能调用执行.这个过程可以继续,直

在GDB中暂停/恢复程序运行

调试程序中,暂停程序运行是必须的,GDB可以方便地暂停程序的运行.你可以设置程序的在哪行停住,在什么条件下停住,在收到什么信号时停往等等.以便于你查看运行时的变量,以及运行时的流程. 当进程被gdb停住时,你可以使用info program 来查看程序的是否在运行,进程号,被暂停的原因. 在gdb中,我们可以有以下几种暂停方式:断点(BreakPoint).观察点(Watch Point).捕捉点(C++atch Point).信号(Signals).线程停止(http://www.aliyun

我在使用VS写asp.net,web应用程序中如何连sql server 接数据库

问题描述 我在使用VS写asp.net,web应用程序中如何连sql server 接数据库 10C 在web程序中我需要连接数据库,使用其中的数据.怎样才能用js与我的sql server2012连接,有没有具体的列子啊!新手求大神解答. 解决方案 用js与数据库连接还是第一次听说,你如果需要执行数据操作是需要后端语言的,Web应用在后台代码中可以用ADO.NET技术来进行数据操作.可以前台js 使用Ajax Post后者Get请求后端接口,后端进行数据库的增删改查.如果是服务器控件直接在事件

java线程-java中的多线程?线程的并发问题

问题描述 java中的多线程?线程的并发问题 多线程具体代表java中程序的什么?它指的实际功能上的什么情况?详细求解 解决方案 多线程和进程的关系详解: 1.当我们运行QQ程序时,操作系统就会为这个程序创建一个QQ进程(QQ~PCB)并且分配CPU.内存等资源. 2.但这个进程中包含着:发送大型的线程.接受文件的线程.发送文字信息的线程.发送文字信息的线程等多个不同功能的线程. 因而我们才能一边发送文件,一边发送文字信息同时操作.这些线程都共享着QQ进程中的CPU.内存等资源. 总结:所以说进

Java中如何使一个线程进入阻塞态?

问题描述 按我的理解,当一个线程需要获取的锁被另一个线程占用时,将进入阻塞态.但实际好像不是这样的,下面是我的代码.在run方法中会调用MyBlock的isBlocked方法,该方法添加了synchronized限定.在main方法中创建两个线程:t1和t2,t1运行后,由于isBlocked方法运行需要一定时间,t2应该进入阻塞态.但我调用getState方法得到的是Runnable,不是Blocked.这是为啥呢? public class TestThread implements Run

求解,windows编程中,win32程序,如何将字符串按一个一个字符逐个动态输出?

问题描述 求解,windows编程中,win32程序,如何将字符串按一个一个字符逐个动态输出? windows编程中,win32程序,如何将字符串按一个一个字符逐个动态输出? 主要是如何测得字符串的长度,然后可以用for循环吗,如果不能用什么循环. 解决方案 string bb = ""; foreach (char aa in "求解,windows编程中,win32程序,如何将字符串按一个一个字符逐个动态输出?") { bb += aa.ToString();

在Java内存模型中测试并发程序代码_java

让我们来看看这段代码:   import java.util.BitSet; import java.util.concurrent.CountDownLatch; public class AnExample { public static void main(String[] args) throws Exception { BitSet bs = new BitSet(); CountDownLatch latch = new CountDownLatch(1); Thread t1 =