仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 591|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET教程之在C#中把两个DataTable毗连起来

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:43:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库)浪漫十一狼
鄙人面的例子中完成了3个Join办法,其目标是把两个DataTable毗连起来,相称于Sql的InnerJoin办法,前往DataTable的一切列。
假如两个DataTable中的DataColumn有反复的话,把第二个设置为ColumnName+"_Second",上面是代码,但愿对人人有所匡助。
usingSystem;
usingSystem.Data;
namespaceWindowsApplication1
{
publicclassSQLOps
{
publicSQLOps()
{
}
publicstaticDataTableJoin(DataTableFirst,DataTableSecond,DataColumn[]FJC,DataColumn[]SJC)
{
//创立一个新的DataTable
DataTabletable=newDataTable("Join");

//UseaDataSettoleverageDataRelation
using(DataSetds=newDataSet())
{
//把DataTableCopy到DataSet中
ds.Tables.AddRange(newDataTable[]{First.Copy(),Second.Copy()});
DataColumn[]parentcolumns=newDataColumn[FJC.Length];
for(inti=0;i<parentcolumns.Length;i++)
{
parentcolumns[i]=ds.Tables[0].Columns[FJC[i].ColumnName];
}
DataColumn[]childcolumns=newDataColumn[SJC.Length];
for(inti=0;i<childcolumns.Length;i++)
{
childcolumns[i]=ds.Tables[1].Columns[SJC[i].ColumnName];
}

//创立联系关系
DataRelationr=newDataRelation(string.Empty,parentcolumns,childcolumns,false);
ds.Relations.Add(r);

//为联系关系表创立列
for(inti=0;i<First.Columns.Count;i++)
{
table.Columns.Add(First.Columns[i].ColumnName,First.Columns[i].DataType);
}
for(inti=0;i<Second.Columns.Count;i++)
{
//看看有无反复的列,假如有在第二个DataTable的Column的列明后加_Second
if(!table.Columns.Contains(Second.Columns[i].ColumnName))
table.Columns.Add(Second.Columns[i].ColumnName,Second.Columns[i].DataType);
else
table.Columns.Add(Second.Columns[i].ColumnName+"_Second",Second.Columns[i].DataType);
}

table.BeginLoadData();
foreach(DataRowfirstrowinds.Tables[0].Rows)
{
//失掉行的数据
DataRow[]childrows=firstrow.GetChildRows(r);
if(childrows!=null&&childrows.Length>0)
{
object[]parentarray=firstrow.ItemArray;
foreach(DataRowsecondrowinchildrows)
{
object[]secondarray=secondrow.ItemArray;
object[]joinarray=newobject[parentarray.Length+secondarray.Length];
Array.Copy(parentarray,0,joinarray,0,parentarray.Length);
Array.Copy(secondarray,0,joinarray,parentarray.Length,secondarray.Length);
table.LoadDataRow(joinarray,true);
}
}
}
table.EndLoadData();
}

returntable;
}

publicstaticDataTableJoin(DataTableFirst,DataTableSecond,DataColumnFJC,DataColumnSJC)
{
returnJoin(First,Second,newDataColumn[]{FJC},newDataColumn[]{SJC});
}
publicstaticDataTableJoin(DataTableFirst,DataTableSecond,stringFJC,stringSJC)
{
returnJoin(First,Second,newDataColumn[]{First.Columns[FJC]},newDataColumn[]{First.Columns[SJC]});
}

}
}
有个问题想请教你一下,呵呵:)你觉得将来学什么方向比较好,我真是想不出来,知道的太少了,麻烦了。
变相怪杰 该用户已被删除
沙发
 楼主| 发表于 2015-1-19 21:41:39 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
兰色精灵 该用户已被删除
板凳
发表于 2015-1-25 14:41:14 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
不帅 该用户已被删除
地板
发表于 2015-2-2 22:31:11 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
小女巫 该用户已被删除
5#
发表于 2015-2-25 20:04:38 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
山那边是海 该用户已被删除
6#
发表于 2015-3-8 02:08:18 | 只看该作者
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
飘飘悠悠 该用户已被删除
7#
发表于 2015-3-15 20:04:10 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
若相依 该用户已被删除
8#
发表于 2015-3-22 03:11:36 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 17:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表