1.定义了一个Product表,该表中的记录有一个State属性,利用该属性的不同值判断Product的状态。该表中存储的数据量比较大,两种不同状态记录数基本相同。我需要在C#中使用这个数据库,请问直接执行
SqlCommand sqlComm=...
string strSQL="Select * From Product Where State=State1 And Product_Id=xxx"
sqlComm.ExecuteNonQuery(strSQL)
和将这两种状态拆成ProductState1和ProductState2两个各自保存不同状态的记录的表,然后执行
if (sTableName=="ProductState1")
strSQL="Select * From Product Where Product_Id=xxx"
else if (sTableName=="ProductState2")
strSQL="Select * From Product Where Product_Id=xxx"
sqlComm.ExecuteNonQuery(strSQL)
这两种方法那个更好一些?(主要是效率、可靠性和安全性三个方面)
2.在B/S结构应用程序中,下面的事务是否安全?
事务T1开始
向表1添加一条记录(Insert 表1 Values ...)
取得刚刚添加记录的主键ID1(Select ...)
向表2添加一条记录(Insert 表2...)
取得刚刚添加记录的主键ID2(Select...)
将ID1,ID2添加进表3(Insert 表3..)
Commit事务
如果出错RollBack事务~~
请问在B/S结构的应用程序中事务T1安全吗?
SqlCommand sqlComm=...
string strSQL="Select * From Product Where State=State1 And Product_Id=xxx"
sqlComm.ExecuteNonQuery(strSQL)
和将这两种状态拆成ProductState1和ProductState2两个各自保存不同状态的记录的表,然后执行
if (sTableName=="ProductState1")
strSQL="Select * From Product Where Product_Id=xxx"
else if (sTableName=="ProductState2")
strSQL="Select * From Product Where Product_Id=xxx"
sqlComm.ExecuteNonQuery(strSQL)
这两种方法那个更好一些?(主要是效率、可靠性和安全性三个方面)
2.在B/S结构应用程序中,下面的事务是否安全?
事务T1开始
向表1添加一条记录(Insert 表1 Values ...)
取得刚刚添加记录的主键ID1(Select ...)
向表2添加一条记录(Insert 表2...)
取得刚刚添加记录的主键ID2(Select...)
将ID1,ID2添加进表3(Insert 表3..)
Commit事务
如果出错RollBack事务~~
请问在B/S结构的应用程序中事务T1安全吗?
解决方案 »
- 导出到word时,如何添加页眉页脚
- 获取input 值的问题
- 多个 UpdatePanel 并发请求的问题
- 添加表情的问题~~(急)
- 碰到一个麻烦的问题,请大伙帮忙
- 关于如何将一个String字符串 和数据流问题
- 象CSDN这样,链接的是asp文件,可最后的地址栏中显示的是Xml文件,是采用的什么方法
- VB中怎样将后台page_load中赋值的变量传到前台的script中?
- 困了两天的问题,请大家帮忙!在线等候
- 没分了帮个忙!svg图片总出现“单击以激活并使用此控件”怎么解决啊
- 有人知道http://mobile.zol.com.cn/中搜索引擎部分的下拉菜单是如何实现的吗?
- 如何使用msword在net网页中处理word文件
表1,表2的主键是SqlServer自动生成的,初始值为10000,增值为1
第二种效率稍微高一点...TO:问题二
没有问题...楼主是担心什么?
2:
2.在B/S结构应用程序中,下面的事务是否安全?
事务T1开始
向表1添加一条记录(Insert 表1 Values ...)
取得刚刚添加记录的主键ID1(Select ...)
向表2添加一条记录(Insert 表2...)
取得刚刚添加记录的主键ID2(Select...)
将ID1,ID2添加进表3(Insert 表3..)
Commit事务
这儿不只是b/s中.c/s中这样的事务也是逻辑上错误的向表1添加一条记录(Insert 表1 Values ...)
取得刚刚添加记录的主键ID1(Select ...)
这并发的过程中,用户1/2可能同时进行在insert操作,应该取得各自的insertedid
而不是相同的select max(id) 这个概念等同于IDENT_CURRENT应该使用SCOPE_IDENTITY/@@IDENTITY