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            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                
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                this.Label1.Text = "失败!";
198            }
199        }
200    }
201}
202

(原创)使用TimeStamp控制并发问题[示例]-简要描述
(原创)使用TimeStamp控制并发问题[示例]-页面HTML脚本
(原创)使用TimeStamp控制并发问题[示例]-创建后台数据库脚本

转载于:https://www.cnblogs.com/Hedonister/archive/2005/06/10/172050.html

(原创)使用TimeStamp控制并发问题[示例]-.cs脚本相关推荐

  1. 如何控制并发和控制死锁(内含pb的处理要点)

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 ...

  2. java线程本地变量_Java并发编程示例(九):本地线程变量的使用

    这篇文章主要介绍了Java并发编程示例(九):本地线程变量的使用,有时,我们更希望能在线程内单独使用,而不和其他使用同一对象启动的线程共享,Java并发接口提供了一种很清晰的机制来满足此需求,该机制称 ...

  3. PHP使用文件锁解决高并发问题示例

    PHP使用文件锁解决高并发问题示例 参考文章: (1)PHP使用文件锁解决高并发问题示例 (2)https://www.cnblogs.com/lxwphp/p/8949518.html (3)htt ...

  4. python3 异步 semaphore 信号量 控制并发

    使用代码如下 from aiohttp import ClientSession import asyncio# 限制协程并发量 async def hello(sem, url):async wit ...

  5. 单片机18b20c语言程序,AVR单片机控制DS18B20的示例C程序

    原标题:AVR单片机控制DS18B20的示例C程序 #include #include #include #include unsigned char data_H, data_L,wendu; un ...

  6. 【nodejs爬虫】使用async控制并发写一个小说爬虫

    最近在做一个书城项目,数据用爬虫爬取,百度了一下找到这个网站,以择天记这本小说为例. 爬虫用到了几个模块,cheerio,superagent,async. superagent是一个http请求模块 ...

  7. WCF 第五章 控制并发调用的数量

    当InstancingMode设置成Single时,WCF在宿主内创建一个单一的实 例,不考虑有多少客户端被创建.当ConcurrencyMode设置成Multiple时,WCF为每个请求创建一个线程 ...

  8. 乐鑫代理启明云端分享:用ESP32单片机控制LED教程示例

    提示:准备好开发板和LED灯 1.可以选择启明云端推出的ESP32开发板,上手简单 原因: 启明云端WT-ESP32-DevKitC V4开发板,这是一款基于ESP32的小型开发板,集WIFI+蓝牙方 ...

  9. JAVA线程并发数量控制_线程同步工具(二)控制并发访问多个资源

    声明:本文是< Java 7 Concurrency Cookbook>的第三章, 作者: Javier Fernández González 译者:郑玉婷 控制并发访问多个资源 在并发访 ...

最新文章

  1. mysql配置文件检查方法
  2. oracle dump 转储
  3. 大数据时代,还不认识这些数据分析工具?
  4. 6-6-1:STL之map和set——set的基本使用
  5. jdbc链接mysql的第二个例子。使用properties文件存放连接信息。使用jar文件一个
  6. 基于MDC的SOA方案
  7. idea新建web项目并配置运行教程
  8. 在libvirt中使用SanLock
  9. oracle表转为分区表,Oracle 在线重定义(将普通堆表转换成分区表)
  10. 常用字体名称中文对应英文
  11. 简账(开源记账软件)-数据库设计
  12. Qt Creator使用教程(简明版)
  13. 杭州电子科技大学计算机考研录取名单,杭州电子科技大学2017年硕士研究生一志愿考生复试名单公布...
  14. 房地产公司网站建设需要多少钱
  15. Java继承的特征和优势
  16. 整合NGFW和威胁分析后,防火墙这是要上天?
  17. 安装 deepin系统 实现windows和deepin双系统
  18. app的崩溃率标准,优秀,合格,轻微隐患,严重隐患
  19. hdu 3995 Perfect Faceless Void
  20. MySQL数据库学习笔记(10)- distinct与in和exists子查询

热门文章

  1. python不等于缺陷
  2. eclipse 64位_Eclipse安装教程
  3. log4j2 mysql_[简单]log4jdbc-log4j2配置简记
  4. gd32 定时器时钟_漫谈LiteOS之开发板-Timer(基于GD32450i-EVAL)
  5. python判断字符串出现的次数_【如何判断python字符串出现次数?这几种方法你一定要学会】- 环球网校...
  6. AUTOSAR标准与产业发展动态
  7. 数据结构 2-3-3 循环链表
  8. 深度学习模型的前馈运算与反馈运算
  9. 【XML】我所知道的XML
  10. IT职场人生系列之三:第一份工作