C#实现多线程读取同一张数据表,用户获取不重复记录,怎么实现!

C#实现多线程读取同一张数据表,用户获取不重复记录,怎么实现!,第1张

这个可以通过修改数据的时间来判断。

例如:

表中有个字段 读取时间。

当这个客户读取10条数据的时候,更新读取时间为当前时间。

然后下个客户读取的时候,判断时间在半个小时内,没有更新的数据。就OK了。

不过这个也有一点不好的地方就是 很可能半小时后 第一个客户还在使用这十条数据。

如果是修改数据的话 楼主可以 把数据库表使用锁定功能,把锁住 这样就不担心重复提交的情况。

希望楼主早日解决问题~~~

在这段代码之前,做查询检查是否重复

string sqlstr = "INSERT INTO [Actor] ( [FilmID] ,[FilmWorkerID] ,[Post] ) VALUES ('" + FilmID + "','" + FilmWorkerID + "','" + Post + "')";

sqlcon = new SqlConnection(strCon);

sqlcom = new SqlCommand(sqlstr, sqlcon);

sqlconOpen();

sqlcomExecuteNonQuery();

这个很简单啊,你在添加记录前,先搜索一下数据库中是否已经存在这个记录,有就提示,没有就保存新纪录。

例子:(由于数据库 *** 作引擎不同,可能不适合你,仅仅是个例子)

rsopen

"select

from

用户表

where

用户名='"

&

username

&

"'

and

密码='"

&

password

&

"'",conn,1,1

if

rseof

then

connexecute

"insert

into

用户表

(用户名,密码)

values

('"

&

username

&

"','"

&

password

&

"')"

else

msgbox

"用户已存在!"

end

if

rsclose

如果不想每条查询一次,可以提前做一个统一查询

$sql=mysql_query("select distinct Code from test ",$conn);

$sqlvalue=[];

while($row=mysql_fetch_array($sql)){

$sqlvalue[]=$row['Code'];

}

另外 ,可以在建表的时候设置unique index,来彻底避免插入重复记录,如果没过滤好插入重复记录的时候,系统会直接报错

<%

'-------------------------数据库连接-----------------------

Set objConn = ServerCreateObject("ADODBConnection")

objConnConnectionString = "Provider=MicrosoftJetOLEDB40;" &_

"Data Source=" & ServerMapPath("datamdb")

objConnOpen

'-------------------------数据库连接-----------------------

'-------------------------检索数据-----------------------

strSQL = "SELECT id,DataColumn FROM DataTable"

'Sql语句,检索数据库

Set objRS = ServerCreateObject("ADODBRecordset")

'创建记录集 网页教学网

objRSOpen strSQL, objConn, 1, 1

'执行检索

Count=objRSRecordCount

'得到记录总数

Item=4

'显示记录数

'-------------------------检索数据-----------------------

'-------------------------------------------------------------------------------

redim a(Item, 2),t(Count)

'定义2数组,数组a用来储存记录,数组t用来删选记录

'---------------------------------------

'初始数组数值,目的为了插入数据以后和此值做比较

for each j in t

j=0

next

'---------------------------------------

'---------------------------------------

' 随机抽取记录号

Randomize timer '初始化随机数生成器

for j=1 to Item

k=int(rndCount+1) '从总数里面随机取一条记录

do while t(k)<>0 '判断是否记录是否已经在数组中

k=int(rndItem+1)

loop

t(k)=1 '第k条记录被选中

next

'--------------------------------------

j=1:i=1'定义下标

'--------------------------------------

' 循环选取数据集objRS中的部分记录存放到数组中

Do While Not objRSEof

if t(j)=1 then

a(i,1)=objRS("id") '记录id

a(i,2)=objRS("DataColumn") '记录内容

i=i+1

end if

j=j+1

objRSMoveNext

网页教学网

Loop

'--------------------------------------

'-------------------------------------------------------------------------------

'----------------------------显示内容--------------------

for i=1 to Item

Responsewrite "序号"&a(i,1)&"<br>"

Responsewrite "内容"&a(i,2)&"<p>"

next

'----------------------------显示内容--------------------

'---------------------------

'释放资源

objRsClose

set objRs=nothing

objConnClose

set objConn=nothing

'---------------------------

%>

是什么重复你可以先把这个表的其中一个字段查询出来,比如 "select id from table ", 然后在你的foreach的时候判断,

if( in_array($check, $checkarr) ) 不插入

其中,$check 是你要插入的数据(单字段),$checkarr是你上面查询的结果( 字段集)

以上就是关于C#实现多线程读取同一张数据表,用户获取不重复记录,怎么实现!全部的内容,包括:C#实现多线程读取同一张数据表,用户获取不重复记录,怎么实现!、asp.net避免添加重复数据的问题、VB对ACCESS数据库 *** 作时,为了避免重复添加记录,应该如何来做呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9646450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存