不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
要自动化就必须简单化,不要把简单的问题复杂化
编辑:dnawo 日期:2009-11-12
假如有如下一张表:
我们用工具为他生成了基本的操作语句:
但在实际运用中,通常不是把CatalogName直接放在Products表中的,Products表中只存放CatalogID的值,表结构如下:
同样也用工具生成了基本的操作语句:
但在使用中有个问题,我们希望在用户界面上显示CatalogName,而不是CatalogID,这时我们很"聪明"的想到,多表查询嘛,很简单:
这只是个简单的例子,实际项目中很多表间的字段都是关联的,于是自动化工具的恶梦就来了,不论他怎么智能,永远满足不了需求,只好手工写了,我们又成功的理由充分的说服自己成了代码机器-_-
要自动化就必须简单化,上边例子还是用工具生成各表的基本操作语句,对于CatalogName,可在需要时再调用Catalog表的操作语句另外进行查询:
复制内容到剪贴板
程序代码

Create Table Products(
ProductID int identity(1,1) Primary key,
ProductName nvarchar(100) not null,
CatalogName nvarchar(50) not null
)
ProductID int identity(1,1) Primary key,
ProductName nvarchar(100) not null,
CatalogName nvarchar(50) not null
)
我们用工具为他生成了基本的操作语句:
复制内容到剪贴板
程序代码

Select * FROM Products Where @condition
Insert INTO Products(ProductName,CatalogName) VALUES(@ProductName,@CatalogName)
Update Products SET ProductName=@ProductName,CatalogName=@CatalogName Where ProductID=@ProductID
Delete FROM Products Where ProductID=@ProductID
Insert INTO Products(ProductName,CatalogName) VALUES(@ProductName,@CatalogName)
Update Products SET ProductName=@ProductName,CatalogName=@CatalogName Where ProductID=@ProductID
Delete FROM Products Where ProductID=@ProductID
但在实际运用中,通常不是把CatalogName直接放在Products表中的,Products表中只存放CatalogID的值,表结构如下:
复制内容到剪贴板
程序代码

Create Table Catalog(
CatalogID int identity(1,1) Primary key,
CatalogName nvarchar(100) not null
)
Create Table Products(
ProductID int identity(1,1) Primary key,
ProductName nvarchar(100) not null,
CatalogID int /*指向Catalog表的CatalogID*/
)
CatalogID int identity(1,1) Primary key,
CatalogName nvarchar(100) not null
)
Create Table Products(
ProductID int identity(1,1) Primary key,
ProductName nvarchar(100) not null,
CatalogID int /*指向Catalog表的CatalogID*/
)
同样也用工具生成了基本的操作语句:
复制内容到剪贴板
程序代码

Select * FROM Products Where @condition
Insert INTO Products(ProductName,CatalogID) VALUES(@ProductName,@CatalogID)
Update Products SET ProductName=@ProductName,CatalogID=@CatalogID Where ProductID=@ProductID
Delete FROM Products Where ProductID=@ProductID
Insert INTO Products(ProductName,CatalogID) VALUES(@ProductName,@CatalogID)
Update Products SET ProductName=@ProductName,CatalogID=@CatalogID Where ProductID=@ProductID
Delete FROM Products Where ProductID=@ProductID
但在使用中有个问题,我们希望在用户界面上显示CatalogName,而不是CatalogID,这时我们很"聪明"的想到,多表查询嘛,很简单:
复制内容到剪贴板
程序代码

Select a.@ProductID,a.ProductName,b.CatalogName FROM Products a LEFT JOIN Catalog b ON a.CatalogID=b.CatalogID
这只是个简单的例子,实际项目中很多表间的字段都是关联的,于是自动化工具的恶梦就来了,不论他怎么智能,永远满足不了需求,只好手工写了,我们又成功的理由充分的说服自己成了代码机器-_-
要自动化就必须简单化,上边例子还是用工具生成各表的基本操作语句,对于CatalogName,可在需要时再调用Catalog表的操作语句另外进行查询:
复制内容到剪贴板
程序代码

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" />
<asp:TemplateField HeaderText="CatalogName">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# GetCatalogName(Eval("CatalogID")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" />
<asp:TemplateField HeaderText="CatalogName">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# GetCatalogName(Eval("CatalogID")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>






评论: 0 | 引用: 0 | 查看次数: 3957
发表评论
请登录后再发表评论!