|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java欺骗了我们那么多年,如今的多核时代,我认为它气数已尽!数据|数据库 (一).尾声
1.在实践的软件开辟中年夜部分都是团队互助开辟的,常常会呈现这类情形,一个程序员只计划好数据库,由另外一个程序员写程式.这就呈现一个成绩.计划数据库的程序员计划数据库字段称号定名习气与写程式码程序员数据库定名习气有些分歧.比方:数据库程序员对客户称号习气定名"CustomerName",而写程式代码程序员习气定名"CusName",如许,写程式代码程序员在利用时,大概会大批利用相似:DataSet.Row[0]["CusName"],如许在更新时就会报错,假如大批呈现这类情形的话,不仅增添开辟时修正BUG所耗工夫,并且更主要的是会使全部项目各代码页面很难一致.
2.能够完成客户端定名不受数据库的束缚.比方数据库中两个表中的两个称号字段分离为:CustomerName和ProjectName;客户端在相干界面,定名字段时没需要晓得是哪一个表中字段的称号,间接写Name就能够了.
此文章就是办理下面两点的请求.
(二).办理办法
1.
实在SqlDataAdapter就已完成此功效了.它能够完成列映照,行将数据库的列程序员自界说的列对应起来.举例申明:
设有个客户表Customer,上面将对其内字段举行映照,详细代码以下:
SqlDataAdaptermyAdapter=newDqlDataAdapter();
DataTableMappingmyMapping=newDataTableMapping();
myMapping=myAdapter.TableMappings.Add("Customer","Customer");//告知桥接器并增加映照工具
myMapping.ColumnMappings.Add("CustomerID","id");//实践数据库中字段名为:CustomerID,在实践//对其操纵时能够用ID字段称号.比方:
// ds.Table["Customer"].Row[0]["id"];//就暗示客户编号列
myMapping.ColumnMappings.Add("CustomerName","name");
myMapping.ColumnMappings.Add("CustomerEmail","email");
myAdapter.Fill(ds,"Customer");
以上在利用时只需用映照后的操纵就能够啦.映照后的这段称号能够自界说.SqlDataAdapter会将它们
对应起来,行将它们看做是统一列.
2.办理站点一致成绩:
a.
假定在十个页面中都用了代码:
ds.Table["Customer"].Row[0]["CustomerName"];
如今因为某缘故原由,要修正数据库表字段,必要将物理数据库中的字段:CustomerName改成:CusName基于如今的情形,还要到这十个页面中往,找出一切的:
ds.Table["Customer"].Row[0]["CustomerName"];
并将其改成:ds.Table["Customer"].Row[0]["CusName"];
呵,就改一个字段就带来这么多贫苦,假如改很多多少个表的多个字段的话呢,工夫损耗几和保护难易水平便可想而知了.上面就办理这个成绩.
b.
界说一个类,并承继DataSet.代码以下:
publicClassCustomer:DataSet
{
publicEnumField
{
ID=0;//这些列与DataSet外部表取得数据后实践字段称号对应要准确.这里本人把持
Name=1;
Email=2;
Password=3;
}
}
OK,最初一步了,利用办法是如许的:
ds.Table["Customer"].Row[0][Customer.Field.ID];//取某列值
比起:ds.Table["Customer"].Row[0]["CustomerID"];
便利多了吧?
如许,假如物理数据库字段怎样修正,程式代码基本不必修正(连这个类自己也不必修正).
感谢浏览!
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到java编译器那么简易。 |
|