请教两个关于C#中使用数据库的问题~~~

leonhome 2006-12-02 10:44:19
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安全吗?
...全文
112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
luck0235 2006-12-03
  • 打赏
  • 举报
回复
1、依项目情况而定,从效率上来讲第二种稍优于第一种。

2、似乎没问题。数据库的操作有区别C/S与B/S吗?
hq2008 2006-12-03
  • 打赏
  • 举报
回复
最好用SCOPE_IDENTITY,不要用@@identity,万一碰到trigger就不好啦
blackant2 2006-12-03
  • 打赏
  • 举报
回复
1:效率应该有差别,因为这样的字段不方便建索引,建了也是基本上没有效率的
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


股神 2006-12-03
  • 打赏
  • 举报
回复
mark
liujia_0421 2006-12-03
  • 打赏
  • 举报
回复
TO:问题一
第二种效率稍微高一点...

TO:问题二
没有问题...

楼主是担心什么?
azurebz 2006-12-02
  • 打赏
  • 举报
回复
1.上面一中效率高。可靠性和安全性差不多
2.不知道安全不安全,反正这样是对的
azurebz 2006-12-02
  • 打赏
  • 举报
回复
先顶后看
leonhome 2006-12-02
  • 打赏
  • 举报
回复
第二个问题补充一点
表1,表2的主键是SqlServer自动生成的,初始值为10000,增值为1

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧