ADO.NET中不常用的功能

ADO.NET中不常用的功能

测试数据:

SqlConnection conn = new SqlConnection("Data Source=192.168.6.4;Initial Catalog=chapter30;uid=sa;pwd=123456;"); SqlCommand cmd = new SqlCommand(); string sqlText = @"Select * from Student Select * from Class Select * from SelectClass Select * from Teacher "; SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); cmd.Connection = conn; cmd.CommandText = sqlText; adapter.TableMappings.Add("Table", "Student"); adapter.TableMappings.Add("Table1", "Class"); adapter.TableMappings.Add("Table2", "SelectClass"); adapter.TableMappings.Add("Table3", "Teacher"); try { conn.Open(); adapter.Fill(ds); } catch { } finally { conn.Close(); } DisplayTableData(ds.Tables["Student"]); DisplayTableData(ds.Tables["Class"]); DisplayTableData(ds.Tables["SelectClass"]); DisplayTableData(ds.Tables["Teacher"]); var student=ds.Tables["Student"]; var classes=ds.Tables["Class"]; var selectclass=ds.Tables["SelectClass"]; var teacher=ds.Tables["Teacher"];


DataRow的行状态

DataRow有4种状态:unchange,modify,detach,deleted

//unchange DisplayRowState(student.Rows[0]); //unchange //modify student.Rows[0][1] = "new_" + student.Rows[0][1].ToString(); DisplayRowState(student.Rows[0]); //detach var tmpRow = student.Rows[0]; student.Rows.Remove(tmpRow); DisplayRowState(tmpRow); //deleted student.Rows[0].Delete(); DisplayRowState(student.Rows[0]);


DataRow的数据版本

//数据行的原始值 var tmpRow2=student.Rows[1]; tmpRow2[1] = "new" + tmpRow2[1].ToString(); Console.WriteLine(tmpRow2[1, DataRowVersion.Default]); Console.WriteLine(tmpRow2[1, DataRowVersion.Current]); Console.WriteLine(tmpRow2[1, DataRowVersion.Original]); //调用Proposed需要调用beginedit方法 tmpRow2.BeginEdit(); Console.WriteLine(tmpRow2[1, DataRowVersion.Proposed]); tmpRow2.EndEdit(); 通过关系获取数据 //一对多 ds.Relations.Add("teachers", ds.Tables["Teacher"].Columns["Id"],ds.Tables["Class"].Columns["TeacherId"]); //多对多的关系在这里会被拆分了1对多 ds.Relations.Add("selectclass", new DataColumn[]{ ds.Tables["Class"].Columns["Id"], //ds.Tables["Student"].Columns["Id"] }, new DataColumn[]{ ds.Tables["SelectClass"].Columns["ClassId"], //ds.Tables["SelectClass"].Columns["StudentId"] } ); //var rows = tmpRow3.GetChildRows("students"); //var rows = tmpRow3.GetChildRows("teachers"); var rows = tmpRow3.GetChildRows("selectclass"); foreach (DataRow tmp in rows) { foreach (var tmp2 in tmp.ItemArray) { Console.Write("{0}\t", tmp2); } Console.WriteLine(); }
执行结果


数据约束

//设置主键 student.PrimaryKey = new DataColumn[] { student.Columns["Id"] }; //设置外键 ForeignKeyConstraint fk = new ForeignKeyConstraint(student.Columns["Id"], selectclass.Columns["StudentId"]); fk.UpdateRule = Rule.Cascade; selectclass.Constraints.Add(fk); //设置唯一约束 UniqueConstraint uq = new UniqueConstraint(student.Columns["Id"]); student.Constraints.Add(uq);


用XSD文件生成ADO.NET对象

//将Schema文件抓换为类对象,命令 XSD [schema文件名] /d /out:输出的文件路径 //看来Microsoft把O/R进行到底,连Xml文件都不放过。 Books books = new Books(); books.book.AddbookRow("MJ传奇一", "P123456789", "王小帅", "清华出版社", "99"); books.book.AddbookRow("MJ传奇二", "P123456789", "王小帅", "清华出版社", "99"); books.book.AddbookRow("MJ传奇三", "P123456789", "王小帅", "清华出版社", "99"); books.book.AddbookRow("MJ传奇四", "P123456789", "王小帅", "清华出版社", "99"); books.book.AddbookRow("MJ传奇五", "P123456789", "王小帅", "清华出版社", "99"); books.book.AddbookRow("MJ传奇六", "P123456789", "王小帅", "清华出版社", "99"); foreach (Books.bookRow book in books.book) { Console.WriteLine(book.Name); }


执行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面可以对界面显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值