社区
C#
帖子详情
请问在多用户环境下如何处理对Access数据库同时对同一条记录进行修改???
icbc_ljt
2009-04-17 03:50:39
请问在多用户环境下如何处理对Access数据库同时对同一条记录进行修改???
...全文
317
18
打赏
收藏
请问在多用户环境下如何处理对Access数据库同时对同一条记录进行修改???
请问在多用户环境下如何处理对Access数据库同时对同一条记录进行修改???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pennymay
2009-04-21
打赏
举报
回复
我个人觉得如果允许多用户访问的话
第1个进入的用户, 可以编辑
在未完成编辑的时候, 其他用户只有只读属性, 但是提示有用户在编辑
在第1个用户编辑结束之后, 解开只读
icbc_ljt
2009-04-21
打赏
举报
回复
不管怎样,先谢谢,我先试试
zz005
2009-04-20
打赏
举报
回复
学习
ztmdsbt
2009-04-20
打赏
举报
回复
zzxap,很好很强大
zzxap
2009-04-20
打赏
举报
回复
http://download.csdn.net/source/613262
zzxap
2009-04-20
打赏
举报
回复
我会用TimeStamp控制
[code=C#]
TimeStamp.aspx.cs代码(C#),已调试通过:
1using System;
2using System.Collections;
3using System.ComponentModel;
4using System.Data;
5using System.Drawing;
6using System.Web;
7using System.Web.SessionState;
8using System.Web.UI;
9using System.Web.UI.WebControls;
10using System.Web.UI.HtmlControls;
11
12using System.Text;
13using System.Data.SqlClient;
14using DataAccess;
15
16namespace TimeStamp
17{
18 /**//// <summary>
19 /// WebForm1 的摘要说明。
20 /// </summary>
21 public class TimeStamp : System.Web.UI.Page
22 {
23 protected System.Web.UI.WebControls.TextBox tbKey;
24 protected System.Web.UI.WebControls.TextBox tbValue;
25 protected System.Web.UI.WebControls.TextBox tbTimeStamp;
26
27 private DataTable dt;
28 protected System.Web.UI.WebControls.Button Button1;
29 protected System.Web.UI.WebControls.Label Label1;
30
31 protected string ConnectString = "server=oylb;User ID=sa;Password=;database=TimeStamp;Connection Reset=FALSE";
32
33 private void Page_Load(object sender, System.EventArgs e)
34 {
35 if (!IsPostBack)
36 {
37 BindData(1);
38 }
39 }
40
41 //取得数据
42 private void GetData(int kid)
43 {
44 DataSet ds = new DataSet();
45
46 String[] sArrayTableName = {"TimeStamp"};
47 SqlHelper.FillDataset(ConnectString,CommandType.StoredProcedure,
48 "GetData",ds,sArrayTableName,
49 new SqlParameter("@KID",kid));
50
51 dt = ds.Tables["TimeStamp"];
52
53 //保存于Session,用于更新
54 Session["TimeStamp"] = dt;
55 }
56
57 //绑定数据到控件
58 private void BindData(int kid)
59 {
60 GetData(kid);
61
62 Byte[] myByte;
63
64 this.tbKey.Text = dt.Rows[0]["KID"].ToString();
65 this.tbValue.Text = dt.Rows[0]["Name"].ToString();
66
67 myByte = (System.Byte[])dt.Rows[0]["TimeStamp"];
68
69 this.tbTimeStamp.Text = Encoding.ASCII.GetString(myByte,0,myByte.Length);
70 }
71
72 //更新数据
73 private bool UpdateData()
74 {
75 dt = (DataTable)Session["TimeStamp"];
76
77 &nb
sp; DataRow row = dt.Rows[0];
78
79 row["Name"] = this.tbValue.Text.Trim();
80
81 dt.AcceptChanges();
82
83 int iEffect = SqlHelper.ExecuteNonQuery(ConnectString,"UpdateData",GetParam(row));
84
85 if (iEffect != 1)
86 {
87 return false;
88 }
89
90 return true;
91 }
92
93 //根据datarow获取参数
94 private SqlParameter[] GetParam(DataRow row)
95 {
96 DataColumnCollection cols;
97
98 cols = row.Table.Columns;
99
100 int iBound = cols.Count;
101
102 SqlParameter[] Params = new SqlParameter[iBound];
103 SqlParameter Param = new SqlParameter();
104
105 string strColumnName;
106 int iIndex = 0;
107
108 object oRowValue = null;
109
110 foreach(DataColumn col in cols)
111 {
112 strColumnName = col.ColumnName;
113
114 oRowValue = row[col];
115
116 if (oRowValue == System.DBNull.Value)
117 {
118 oRowValue = DBNull.Value;
119 }
120
121 if (col.DataType.ToString() == "System.Byte[]")
122 {
123 //专门处理Timestamp
124 Param = new SqlParameter("@"+strColumnName,SqlDbType.Timestamp, 8);
125 Param.Direction = ParameterDirection.Input;
126 Param.Value = oRowValue;
127 }
128 else
129 {
130 Param = new SqlParameter();
131
132 Param.ParameterName = "@"+strColumnName;
133 Param.SqlDbType = GetColSqlDbType(col);
134 Param.Direction = ParameterDirection.Input;
135 Param.Value = oRowValue;
136 }
137 &n
bsp;
138 Params[iIndex] = Param;
139 iIndex ++;
140 }
141
142 return Params;
143 }
144
145 //转化类型
146 private SqlDbType GetColSqlDbType(DataColumn col)
147 {
148 string strType = col.DataType.ToString();
149
150 switch(strType)
151 {
152 case "System.Int32":
153 return SqlDbType.Int;
154 case "System.DateTime":
155 return SqlDbType.DateTime;
156 case "System.Double":
157 return SqlDbType.Decimal;
158 case "System.String":
159 return SqlDbType.Char;
160 case "System.Byte[]":
161 return SqlDbType.Timestamp;
162 default:
163 return SqlDbType.Char;
164 }
165 }
166 Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
167 override protected void OnInit(EventArgs e)
168 {
169 //
170 // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
171 //
172 InitializeComponent();
173 base.OnInit(e);
174 }
175
176 /**//// <summary>
177 /// 设计器支持所需的方法 - 不要使用代码编辑器修改
178 /// 此方法的内容。
179 /// </summary>
180 private void InitializeComponent()
181 {
182 this.Button1.Click += new System.EventHandler(this.Button1_Click);
183 this.Load += new System.EventHandler(this.Page_Load);
184
185 }
186 #endregion
187
188 private void Button1_Click(object sender, System.EventArgs e)
189 {
190 if (UpdateData())
191 {
192 this.Label1.Text = "成功!";
193 BindData(1);
194 }
195 else
196 {
197 &
nbsp; this.Label1.Text = "失败!";
198 }
199 }
200 }
201}
202
上面用了sqlhelper
[/CODE]
zhoulehua
2009-04-20
打赏
举报
回复
ding
icbc_ljt
2009-04-20
打赏
举报
回复
这样不就那个checkOut机制啊,跟楼上说的一样,不过这样有人编辑会很麻烦了
哎。。。没有更好的办法
icbc_ljt
2009-04-20
打赏
举报
回复
这样不就那个checkOut机制啊,跟楼上说的一样,不过这样有人编辑会很麻烦了
weir55
2009-04-17
打赏
举报
回复
[Quote=引用 6 楼 feifeiyiwen 的回复:]
引用 5 楼 rtdb 的回复:
可以考虑使用CHECKOUT机制,一次只允许一人更改以避免数据丢失。
up
[/Quote]
顶
tailor_ms
2009-04-17
打赏
举报
回复
mark
heyu52
2009-04-17
打赏
举报
回复
我们是这样子做的
首先当读取一条数据时,就有一个静态类进行订记,这个类为远程对象
所有的用户都是通过远程对象来读取数据
当一个用户开始编辑时,先看服务器上有没有记录着其它的用户在编辑些记录
如果没有,就允许编辑,并在服务器上记下此用户编辑此记录
用户保存后,就将些记录告诉服务器
依此下去
feifeiyiwen
2009-04-17
打赏
举报
回复
[Quote=引用 5 楼 rtdb 的回复:]
可以考虑使用CHECKOUT机制,一次只允许一人更改以避免数据丢失。
[/Quote]
up
rtdb
2009-04-17
打赏
举报
回复
可以考虑使用CHECKOUT机制,一次只允许一人更改以避免数据丢失。
shalen520
2009-04-17
打赏
举报
回复
考虑TimeStamp,只有一人能成功更新
blestcc
2009-04-17
打赏
举报
回复
允許啊?那你最終想保留哪個人修改的結果呢?
icbc_ljt
2009-04-17
打赏
举报
回复
当然允许了,不想丢失数据啊
rtdb
2009-04-17
打赏
举报
回复
你想怎么控制? 允许还是不允许?
access
mysql并发_
多用户
同时使用
ACCESS
时 间:2013-10-05 08:06:11作 者:摘 要:
多用户
同时使用
ACCESS
正 文:前提是每个用户都不能使用独占的方式打开。共享
数据库
(MDB)注释本主题中的信息仅适用于Microsoft
Access
数据库
(.mdb)。若要从另一台计算机上...
数据库
引擎找不到服务器名称,解决
Access
多用户
局域网使用时为什么会出现#名称?错误及
Access
数据库
引擎找不到对象等错误...
错误及
Access
数据库
引擎找不到对象等错误现象:客户的系统是使用
Access
前台+
Access
后台的 方式,在局域网
多用户
同时使用,前台和后台
Access
都放在服务器。偶尔客户的系统会出现以下错误:Microsoft Office
Access
...
Access
数据库
有什么用?该
数据库
有什么功能?
Access
是Microsoft 365套件工具随附的强大生产力工具,该工具允许用户创建以有组织的结构存储信息的...对于那些想寻找一个简单的
数据库
管理系统的用户来说,微软旗下的
Access
数据库
也许是可以让其眼前一亮的工具。
ACCESS
数据库
内容批量替换与
修改
工具
htmltable {th, td {th {pre {简介:本文介绍了一款专门用于Microsoft
Access
数据库
的工具,该工具支持批量替换或
修改
特定字段中的内容,能够显著提高
数据库
管理效率并降低错误率。其功能包括按字段
进行
批量更新,...
掌握
Access
数据库
的管理:查看、
修改
、添加与删除
在
数据库
世界里,表(Table)是存储数据的基本结构,它由行(Rows)和列(Columns)组成,每一行代表
一条
记录
(Record),每一列代表
记录
的一个字段(Field)。理解表的结构对于高效地存储和检索数据至关重要。在...
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章