C#中使用ADO-连接SQLServer数据库.doc

C#中使用ADO-连接SQLServer数据库.doc

ID:56016549

大小:45.00 KB

页数:7页

时间:2020-03-15

C#中使用ADO-连接SQLServer数据库.doc_第1页
C#中使用ADO-连接SQLServer数据库.doc_第2页
C#中使用ADO-连接SQLServer数据库.doc_第3页
C#中使用ADO-连接SQLServer数据库.doc_第4页
C#中使用ADO-连接SQLServer数据库.doc_第5页
资源描述:

《C#中使用ADO-连接SQLServer数据库.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C#中使用ADO.NET连接SQLServer数据库,自动增长字段用作主键,处理事务时的基本方法问题描述:假设在数据库中存在以下两张数据表:User表,存放用户的基本信息,基本结构如下所示: 类型说明ID_Userint自动增长字段,用作该表的主键UserNamevarchar     UserDepart表,存放用户所拥有的部门(我们假设一个用户拥有多个部门,虽然听起来有点别扭,此处仅作示例,可以理解为一个用户拥有多个职位等等),该表的基本结构如下所示: 类型说明ID_UserDepartint自动增长字段,用作该表的主键ID_Userint用户编号ID_Depar

2、tint部门编号     向数据库中插入一条用户信息的时候,为了保证数据的一致性,必须使用事务的方式“同时”操作User表和UserDepart表。先将用户姓名写入User表中,再将其所拥有的部门写入UserDepart表中,使用事务机制保证这两步操作要么同时成功,要么同时失败。问题就出在:第一步操作完成后,我们并不知道该向第二步操作写入的ID_User的值是多少,因为这个值是SQLServer自动生成的。 解决思路:可以借助 SELECTIDENT_CURRENT('User')AS‘NewInsertID’来查询最近一次插入User表的数据的自动编号的值。 程序实

3、现:1publicstructChaos_TranSQLCmd2{3///

4///一条SQL语句5///6publicstringstrSQL;78///9///标记该条SQL语句是否需要连接ID_User10///11publicboolbNeedID;12}131415publicvoidChaos_ExecuteSqlTran(ListlistTranSQLCmd,stringstrInsertID_SQL)16{17using(SqlConnecti

4、onChaosSqlConn=newSqlConnection(strSqlConnString))18{19SqlCommandChaosSqlCmd=newSqlCommand();20ChaosSqlCmd.Connection=ChaosSqlConn;21ChaosSqlConn.Open();22SqlTransactionChaosSqlTran=ChaosSqlConn.BeginTransaction();23ChaosSqlCmd.Transaction=ChaosSqlTran;2425try26{27stringmID_User="";2829

5、//先将数据插入User30ChaosSqlCmd.CommandText=strInsertID_SQL;31ChaosSqlCmd.ExecuteNonQuery();3233//再获取ID_User34DataSetds=this.ExecAdapter("selectIDENT_CURRENT('PT_User')as'ID'","T");35DataTabledt=ds.Tables["T"];36if(dt.Rows.Count>0)37{38mID_User=dt.Rows[0]["ID"].ToString();39}4041for(inti=0;i<

6、listTranSQLCmd.Count;i++)42{43//如果队列中的语句需要连接ID,则处理SQL语句后再执行44stringstrSQL="";45if(listTranSQLCmd[i].bNeedID==true)46{47strSQL=string.Format(listTranSQLCmd[i].strSQL,mID_User);48}49else50{51strSQL=listTranSQLCmd[i].strSQL;52}5354ChaosSqlCmd.CommandText=strSQL;55ChaosSqlCmd.ExecuteNonQuer

7、y();56}5758//全部成功执行则提交59ChaosSqlTran.Commit();60}61catch(System.Data.SqlClient.SqlExceptionEx)62{63//发生问题则回滚64ChaosSqlTran.Rollback();65thrownewException(Ex.Message);66}67}68} 测试代码如下:1staticvoidMain(string[]args)2{3try4{5ListChaos_SQLC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。