积极答复者
C#中checkbox取值

问题
-
这个是增加保险信息中险种的选项
问题:
1 与这个窗体有关的数据表有3个,一个是存储保险的车对保险信息是外键表,一个是保险信息主表,一个是存储险种的对保险信息是外键表。当点添加按钮的时候,怎么去同时对3个表添加信息,开始表都为空。主表中的2个外键:保存车号表的主键,保存险种表的主键。也就是当外键表主键列有值得时候,同时获得外键列添加到主表中?
2 上图中第一个是交强险的险种,下图是商业险的险种。C#中checkBox标识符不同,怎么循环获取交强险中险种的Value,同时作为某个方法的传入参数,通过该参数获得险种的编号,之后通过编号作为另个方法的传入参数执行添加语句。也就是说这些方法同时根据循环得到的Value依次去执行?
流程示意:图一为例,我先获得“死亡”选中项的值,得到之后给某个方法,这个方法根据“死亡”去查“死亡”对应的主键,得到主键之后,作为一个SQL语句中某字段的外键列,执行添加。之后循环第二个,第三个。
我不知道我这么叙述观看者能明白我的意思嚒。
答案
-
Hi elementsoul,
这里我们需要依次在三个表中插入数据, 比如如果表二中外键是表一主键, 表三中外键是表二主键, 那么首先在表一插入记录。如果执行ExecuteNonQuery()插入成功, 则在表二中插入记录,外键值为表一刚刚插入记录的主键值, 在第三个表中插入数据则需要先判断表二插入数据是否成功。
这里如果你想在级联插入中任何一处出错/抛异常时取消所有插入操作,可以用SQL Transaction来实现,具体可以参看官方文档中的例子:
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqltransaction.aspx。
这个例子中,在有异常抛出时才会回滚, 如果你想在无异常抛出而某一步插入操作失败时(ExecuteNonQuery()返回-1时)调用transaction.Rollback();手动回滚。
祝你快乐每一天,Leo Liu [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Planet Element 2012年2月29日 1:07
全部回复
-
Hi elementsoul,
这里我们需要依次在三个表中插入数据, 比如如果表二中外键是表一主键, 表三中外键是表二主键, 那么首先在表一插入记录。如果执行ExecuteNonQuery()插入成功, 则在表二中插入记录,外键值为表一刚刚插入记录的主键值, 在第三个表中插入数据则需要先判断表二插入数据是否成功。
这里如果你想在级联插入中任何一处出错/抛异常时取消所有插入操作,可以用SQL Transaction来实现,具体可以参看官方文档中的例子:
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqltransaction.aspx。
这个例子中,在有异常抛出时才会回滚, 如果你想在无异常抛出而某一步插入操作失败时(ExecuteNonQuery()返回-1时)调用transaction.Rollback();手动回滚。
祝你快乐每一天,Leo Liu [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Planet Element 2012年2月29日 1:07
-
怎么会用13个DataSet呢,这样太没效率了, 可否在SQL Server里面截一张表间关系图让我们看看你的数据表都是如何设计的。
现在上传图片很方便了,就在编辑窗口顶部, 最后一个工具图标。Leo Liu [MSFT]
MSDN Community Support | Feedback to us
-
Hi elementsoul,
"可惜没有"是什么意思呢?可否按照我的上一个回复提供一些相关有用的信息以便我们帮你解决问题?
如果要提供相关代码段的话请使用编辑框中的“插入代码块”功能。
祝你快乐每一天,Leo Liu [MSFT]
MSDN Community Support | Feedback to us