62,046
社区成员
发帖
与我相关
我的任务
分享
public class TestFactory
{
private static object objPONo = new object();
public static string GetPONumber(string name)
{
lock (objPONo)
{
//定義訂單號PONo
string PONo = string.Empty;
//將訂單號PONo自動加1
string strsql = "update tb set PONo=PONo+1,CreateBy='" + name + "',CreateDate=getdate()";
int i = SQLHelper.ExecuteNonQuery(strsql);
//如果登陸人為Takako,線程睡眠3秒.以作測試
if (name.ToLower() == "takako_yang")
{
Thread.Sleep(3000);
}
//如果update失敗,表示DB中不存在資料,則往DB塞入第一筆訂單號PONo:1000000000.
if (i == 0)
{
strsql = "insert into tb values(1000000000,'" + name + "',getdate())";
i = SQLHelper.ExecuteNonQuery(strsql);
}
//選出最后一筆
strsql = "select max(PONo) from tb";
object o = SQLHelper.ExecuteScalar(strsql);
if (o == DBNull.Value)
{
PONo = "1000000000";
}
else
{
PONo = SQLHelper.ExecuteScalar(strsql).ToString();
}
return PONo;
}
}
}
if object_id('tb') is not null drop table tb
create table tb(PONo nvarchar(10) ,CreateBy nvarchar(20) ,CreateDate smalldatetime)
go
select * from tb
go
--PONo CreateBy CreateDate
------------ -------------------- -----------------------
--(0 个数据列受到影响)
前台代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
string name = User.Identity.Name.ToString();
string PONo = TestFactory.GetPONumber(name);
Response.Write(PONo);
}
public class TestFactory
{
private static object objPONo = new object();
public static string GetPONumber(string name)
{
//lock (objPONo)
//{
//定義訂單號PONo
string PONo = string.Empty;
//將訂單號PONo自動加1
string strsql = "update tb set PONo=PONo+1,CreateBy='" + name + "',CreateDate=getdate()";
int i = SQLHelper.ExecuteNonQuery(strsql);
//如果登陸人為Takako,線程睡眠3秒.以作測試
if (name.ToLower() == "takako_yang")
{
Thread.Sleep(3000);
}
//如果update失敗,表示DB中不存在資料,則往DB塞入第一筆訂單號PONo:1000000000.
if (i == 0)
{
strsql = "insert into tb values(1000000000,'" + name + "',getdate())";
i = SQLHelper.ExecuteNonQuery(strsql);
}
//選出最后一筆
strsql = "select max(PONo) from tb";
object o = SQLHelper.ExecuteScalar(strsql);
if (o == DBNull.Value)
{
PONo = "1000000000";
}
else
{
PONo = SQLHelper.ExecuteScalar(strsql).ToString();
}
return PONo;
//}
}
}